script updated
This commit is contained in:
parent
7cfd7321ba
commit
6ccade1d88
|
@ -22,10 +22,18 @@ class InvalidHtmlFile(LoadError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def from_html(html, source_filename=None, base_url=None, message_params=None, local_loader=None, **kwargs):
|
def from_html(html, text=None, base_url=None, message_params=None, local_loader=None,
|
||||||
|
template_cls=None, message_cls=None, source_filename=None, requests_params=None,
|
||||||
|
**kwargs):
|
||||||
|
|
||||||
|
if template_cls:
|
||||||
|
html = template_cls(html)
|
||||||
|
if template_cls and text:
|
||||||
|
text = template_cls(text)
|
||||||
|
|
||||||
message_params = message_params or {}
|
message_params = message_params or {}
|
||||||
message = Message(html=html, **message_params)
|
message = (message_cls or Message)(html=html, text=text, **message_params)
|
||||||
message.create_transformer(requests_params=kwargs.pop('requests_params', None),
|
message.create_transformer(requests_params=requests_params,
|
||||||
base_url=base_url,
|
base_url=base_url,
|
||||||
local_loader=local_loader)
|
local_loader=local_loader)
|
||||||
if message.transformer.tree is None:
|
if message.transformer.tree is None:
|
||||||
|
|
|
@ -289,7 +289,6 @@ class MsgLoader(BaseLoader):
|
||||||
self._parsed = True
|
self._parsed = True
|
||||||
|
|
||||||
def get_file(self, name):
|
def get_file(self, name):
|
||||||
#print("MsgLoader.get_file", name)
|
|
||||||
self.parse()
|
self.parse()
|
||||||
if name.startswith('cid:'):
|
if name.startswith('cid:'):
|
||||||
name = self._content_ids.get(name[4:])
|
name = self._content_ids.get(name[4:])
|
||||||
|
|
|
@ -17,7 +17,6 @@ from .backend.smtp import SMTPBackend
|
||||||
from .store import MemoryFileStore, BaseFile
|
from .store import MemoryFileStore, BaseFile
|
||||||
from .signers import DKIMSigner
|
from .signers import DKIMSigner
|
||||||
|
|
||||||
|
|
||||||
load_email_charsets() # sic!
|
load_email_charsets() # sic!
|
||||||
|
|
||||||
|
|
||||||
|
@ -352,25 +351,23 @@ class MessageSendMixin(object):
|
||||||
class MessageTransformerMixin(object):
|
class MessageTransformerMixin(object):
|
||||||
|
|
||||||
transformer_cls = None
|
transformer_cls = None
|
||||||
|
_transformer = None
|
||||||
|
|
||||||
def create_transformer(self, **kw):
|
def create_transformer(self, transformer_cls=None, **kw):
|
||||||
cls = self.transformer_cls
|
cls = transformer_cls or self.transformer_cls
|
||||||
if cls is None:
|
if cls is None:
|
||||||
from emails.transformer import MessageTransformer
|
from .transformer import MessageTransformer # avoid cyclic import
|
||||||
cls = MessageTransformer
|
cls = MessageTransformer
|
||||||
|
|
||||||
self._transformer = cls(message=self, **kw)
|
self._transformer = cls(message=self, **kw)
|
||||||
return self._transformer
|
|
||||||
|
|
||||||
def destroy_transformer(self):
|
def destroy_transformer(self):
|
||||||
self._transformer = None
|
self._transformer = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def transformer(self):
|
def transformer(self):
|
||||||
t = getattr(self, '_transformer', None)
|
if self._transformer is None:
|
||||||
if t is None:
|
self.create_transformer()
|
||||||
t = self.create_transformer()
|
return self._transformer
|
||||||
return t
|
|
||||||
|
|
||||||
def set_html(self, **kw):
|
def set_html(self, **kw):
|
||||||
# When html set, remove old transformer
|
# When html set, remove old transformer
|
||||||
|
@ -378,7 +375,6 @@ class MessageTransformerMixin(object):
|
||||||
BaseMessage.set_html(self, **kw)
|
BaseMessage.set_html(self, **kw)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class MessageDKIMMixin(object):
|
class MessageDKIMMixin(object):
|
||||||
|
|
||||||
dkim_cls = DKIMSigner
|
dkim_cls = DKIMSigner
|
||||||
|
|
|
@ -7,7 +7,9 @@ Simple utility that imports html from url ang print generated rfc822 message to
|
||||||
|
|
||||||
Example usage:
|
Example usage:
|
||||||
|
|
||||||
$ python make_rfc822.py --url=http://lavr.github.io/python-emails/tests/campaignmonitor-samples/sample-template/template-widgets.html \
|
$ python make_rfc822.py \
|
||||||
|
--url=http://lavr.github.io/python-emails/tests/campaignmonitor-samples/sample-template/template-widgets.html \
|
||||||
|
--inline-images \
|
||||||
--subject="Some subject" \
|
--subject="Some subject" \
|
||||||
--from-name="Sergey Lavrinenko" \
|
--from-name="Sergey Lavrinenko" \
|
||||||
--from-email=s@lavr.me \
|
--from-email=s@lavr.me \
|
||||||
|
@ -25,7 +27,6 @@ Copyright 2013 Sergey Lavrinenko <s@lavr.me>
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
import emails
|
import emails
|
||||||
|
@ -61,12 +62,24 @@ class MakeRFC822:
|
||||||
else:
|
else:
|
||||||
message_id = None
|
message_id = None
|
||||||
|
|
||||||
message_params = dict(headers=self._headers_from_command_line(),
|
args = dict(images_inline=options.inline_images,
|
||||||
template_cls=T,
|
message_params=dict(headers=self._headers_from_command_line(),
|
||||||
mail_from=(options.from_name, options.from_email),
|
mail_from=(options.from_name, options.from_email),
|
||||||
subject=T(unicode(options.subject, 'utf-8')),
|
subject=T(unicode(options.subject, 'utf-8')),
|
||||||
message_id=message_id)
|
message_id=message_id),
|
||||||
message = emails.loader.from_url(url=options.url, images_inline=options.inline_images, message_params=message_params)
|
template_cls=T)
|
||||||
|
if options.url:
|
||||||
|
message = emails.loader.from_url(url=options.url, **args)
|
||||||
|
elif options.from_directory:
|
||||||
|
message = emails.loader.from_directory(options.from_directory, **args)
|
||||||
|
elif options.from_file:
|
||||||
|
message = emails.loader.from_file(options.from_file, **args)
|
||||||
|
elif options.from_zipfile:
|
||||||
|
message = emails.loader.from_zip(options.from_zipfile, **args)
|
||||||
|
else:
|
||||||
|
logging.error('No message source specified.')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
return message
|
return message
|
||||||
|
|
||||||
def _send_test_email(self, message):
|
def _send_test_email(self, message):
|
||||||
|
@ -108,7 +121,6 @@ class MakeRFC822:
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# If it is not json, we expect one word with '@' sign
|
# If it is not json, we expect one word with '@' sign
|
||||||
assert len(l.split()) == 1
|
assert len(l.split()) == 1
|
||||||
print l
|
|
||||||
login, domain = l.split('@') # ensure there is something email-like
|
login, domain = l.split('@') # ensure there is something email-like
|
||||||
yield {'to': l}
|
yield {'to': l}
|
||||||
|
|
||||||
|
@ -144,7 +156,10 @@ if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description='Imports html from url ang generate rfc822 message.')
|
description='Imports html from url ang generate rfc822 message.')
|
||||||
|
|
||||||
parser.add_argument("-u", "--url", metavar="URL", dest="url", action="store", default=None, required=True)
|
parser.add_argument("-u", "--url", metavar="URL", dest="url", action="store", default=None)
|
||||||
|
parser.add_argument("--source-directory", dest="from_directory", action="store", default=None)
|
||||||
|
parser.add_argument("--source-file", dest="from_file", action="store", default=None)
|
||||||
|
parser.add_argument("--source-zipfile", dest="from_zipfile", action="store", default=None)
|
||||||
|
|
||||||
parser.add_argument("-f", "--from-email", metavar="EMAIL", dest="from_email", default=None, required=True)
|
parser.add_argument("-f", "--from-email", metavar="EMAIL", dest="from_email", default=None, required=True)
|
||||||
parser.add_argument("-n", "--from-name", metavar="NAME", dest="from_name", default=None, required=True)
|
parser.add_argument("-n", "--from-name", metavar="NAME", dest="from_name", default=None, required=True)
|
||||||
|
|
Reference in New Issue