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