本文整理汇总了Python中tendenci.apps.emails.models.Email类的典型用法代码示例。如果您正苦于以下问题:Python Email类的具体用法?Python Email怎么用?Python Email使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Email类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: profile_edit_admin_notify
def profile_edit_admin_notify(request, old_user, old_profile, profile, **kwargs):
from django.template import RequestContext
subject = 'User Account Modification Notice for %s' % get_setting('site', 'global', 'sitedisplayname')
body = render_to_string('profiles/edit_notice.txt',
{'old_user':old_user,
'old_profile': old_profile,
'profile': profile},
context_instance=RequestContext(request))
sender = settings.DEFAULT_FROM_EMAIL
recipients = ['%s<%s>' % (r[0], r[1]) for r in settings.ADMINS]
email = Email(
sender=sender,
recipient=recipients,
subject=subject,
body=body)
email.send(fail_silently=True)
开发者ID:goetzk,项目名称:tendenci,代码行数:18,代码来源:utils.py
示例2: email_script_errors
def email_script_errors(err_msg):
"""Send error message to us in case of an error.
"""
email = Email()
email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
email.sender_display = get_setting('site', 'global', 'sitedisplayname')
site_url = get_setting('site', 'global', 'siteurl')
now = datetime.now()
nowstr = time.strftime("%d-%b-%y %I:%M %p", now.timetuple())
email.recipient = get_script_support_emails()
if email.recipient:
email.body = '%s \n\nTime Submitted: %s\n' % (err_msg, nowstr)
email.content_type = "text"
email.subject = 'Error Setting Up Campaign Monitor Account on New Site %s' % site_url
email.send()
开发者ID:goetzk,项目名称:tendenci,代码行数:17,代码来源:setup_campaign_monitor.py
示例3: save
def save(self, email_template_name='registration/password_reset_email_user_list.html', **kwargs):
"""
Generates a one-use only link for resetting password and sends to the designated email.
The email will contain links for resetting passwords for all accounts associated to the email.
"""
email_template_name = 'registration/password_reset_email_user_list.html'
domain_override = kwargs.get('domain_override', False)
use_https = kwargs.get('use_https', False)
token_generator = kwargs.get('token_generator', default_token_generator)
user_list = []
for user in self.users_cache:
user_list.append({
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'user': user,
'token': token_generator.make_token(user),
})
if not domain_override:
site_name = get_setting('site', 'global', 'sitedisplayname')
else:
site_name = domain_override
site_url = get_setting('site', 'global', 'siteurl')
t = loader.get_template(email_template_name)
c = {
'email': self.email,
'site_url': site_url,
'site_name': site_name,
'user_list': user_list,
'protocol': use_https and 'https' or 'http',
}
from_email = get_setting('site', 'global', 'siteemailnoreplyaddress') or settings.DEFAULT_FROM_EMAIL
email = Email(
sender=from_email,
recipient=user.email,
subject=_("Password reset on %s") % site_name,
body=t.render(context=c))
email.send()
开发者ID:tendenci,项目名称:tendenci,代码行数:39,代码来源:forms.py
示例4: __init__
def __init__(self):
self.site_display_name = get_setting("site", "global", "sitedisplayname")
self.site_contact_name = get_setting("site", "global", "sitecontactname")
self.site_contact_email = get_setting("site", "global", "sitecontactemail")
self.reply_to_email = get_setting("module", "payments", "paymentrecipients")
if not self.reply_to_email:
self.reply_to_email = self.site_contact_email
self.site_url = get_setting("site", "global", "siteurl")
self.email = Email()
self.email.sender = get_setting("site", "global", "siteemailnoreplyaddress")
self.email.sender_display = self.site_display_name
self.email.reply_to = self.reply_to_email
self.admin_emails = self.get_admin_emails()
开发者ID:ZHW123,项目名称:tendenci,代码行数:15,代码来源:utils.py
示例5: email_invoice
def email_invoice(request, invoice_id, form_class=EmailInvoiceForm,
template_name='invoices/email_invoice.html'):
if not request.user.profile.is_superuser:
raise Http403
invoice = get_object_or_404(Invoice, pk=invoice_id)
if request.method == "POST":
email = Email()
form = form_class(request.POST, instance=email)
if form.is_valid():
email = form.save(commit=False)
email.sender_display = request.user.get_full_name()
email.reply_to = request.user.email
email.recipient = form.cleaned_data['recipient']
email.content_type = "html"
email.recipient_cc = form.cleaned_data['cc']
attachment = form.cleaned_data['attachment']
kwargs = {}
if attachment:
result = invoice_pdf(request, invoice)
kwargs['attachments'] = [("invoice_{}.pdf".format(invoice.id),
result.getvalue(),
'application/pdf')]
email.send(**kwargs)
EventLog.objects.log(instance=email)
msg_string = 'Successfully sent email invoice to {}.'.format(email.recipient)
messages.add_message(request, messages.SUCCESS, msg_string)
return HttpResponseRedirect(reverse('invoice.view', args=([invoice_id])))
else:
template = get_template("invoices/email_invoice_template.html")
body_initial = template.render(RequestContext(request, {
'invoice': invoice,}))
form = form_class(initial={'subject': 'Invoice for {}'.format(invoice.title),
'recipient': invoice.bill_to_email,
'body': body_initial})
return render_to_response(template_name, {
'invoice': invoice,
'form': form
},context_instance=RequestContext(request))
开发者ID:goetzk,项目名称:tendenci,代码行数:46,代码来源:views.py
示例6: __init__
def __init__(self):
self.site_display_name = get_setting('site', 'global', 'sitedisplayname')
self.site_contact_name = get_setting('site', 'global', 'sitecontactname')
self.site_contact_email = get_setting('site', 'global', 'sitecontactemail')
self.reply_to_email = get_setting('module', 'payments', 'paymentrecipients')
if not self.reply_to_email:
self.reply_to_email = self.site_contact_email
self.site_url = get_setting('site', 'global', 'siteurl')
self.email = Email()
self.email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
self.email.sender_display = self.site_display_name
self.email.reply_to = self.reply_to_email
self.email_footer = render_to_string("email_footer.html")
self.admin_emails = self.get_admin_emails()
开发者ID:goetzk,项目名称:tendenci,代码行数:16,代码来源:utils.py
示例7: send_organizer_confirmation
def send_organizer_confirmation(self, event):
from tendenci.apps.emails.models import Email
from tendenci.apps.site_settings.utils import get_setting
email = Email()
if event.organizer and event.organizer.user \
and event.organizer.user.email:
email.recipient = event.organizer.user.email
else:
email.recipient = get_setting('module', 'events', 'admin_emails')
if not email.recipient:
email.recipient = get_setting('site', 'global',
'sitecontactemail')
email.subject = '%s Event Reminders Distributed for: %s' % (
get_setting('site', 'global',
'sitedisplayname'),
event.title
)
email.body = self.get_reminder_conf_body(event)
email.send()
开发者ID:tendenci,项目名称:tendenci,代码行数:22,代码来源:send_event_reminders.py
示例8: RecurringPaymentEmailNotices
class RecurringPaymentEmailNotices(object):
def __init__(self):
self.site_display_name = get_setting("site", "global", "sitedisplayname")
self.site_contact_name = get_setting("site", "global", "sitecontactname")
self.site_contact_email = get_setting("site", "global", "sitecontactemail")
self.reply_to_email = get_setting("module", "payments", "paymentrecipients")
if not self.reply_to_email:
self.reply_to_email = self.site_contact_email
self.site_url = get_setting("site", "global", "siteurl")
self.email = Email()
self.email.sender = get_setting("site", "global", "siteemailnoreplyaddress")
self.email.sender_display = self.site_display_name
self.email.reply_to = self.reply_to_email
self.admin_emails = self.get_admin_emails()
def get_admin_emails(self):
payment_admins = get_setting("module", "payments", "paymentrecipients")
if payment_admins:
payment_admins = payment_admins.split(",")
admin_emails = payment_admins
else:
admin_emails = (get_setting("site", "global", "admincontactemail")).split(",")
if admin_emails:
admin_emails = ",".join(admin_emails)
return admin_emails
def get_script_support_emails(self):
admins = getattr(settings, "ADMINS", None)
if admins:
recipients_list = [admin[1] for admin in admins]
return ",".join(recipients_list)
return None
def email_script_support_transaction_error(self, payment_transaction):
"""if there is an error other than transaction not being approved, notify us.
"""
self.email.recipient = self.get_script_support_emails()
if self.email.recipient:
template_name = "recurring_payments/email_script_support_transaction.html"
try:
email_content = render_to_string(
template_name,
{"pt": payment_transaction, "site_display_name": self.site_display_name, "site_url": self.site_url},
)
self.email.body = email_content
self.email.content_type = "html"
self.email.priority = 1
self.email.subject = _(
"Recurring payment transaction error on %(dname)s" % {"dname": self.site_display_name}
)
self.email.send()
except TemplateDoesNotExist:
pass
def email_admins_transaction_result(self, payment_transaction, success=True):
"""Send admins the result after the transaction is processed.
"""
self.email.recipient = self.admin_emails
if self.email.recipient:
template_name = "recurring_payments/email_admins_transaction.html"
user_in_texas = False
if payment_transaction.payment.state:
if payment_transaction.payment.state.lower() in ["texas", "tx"]:
user_in_texas = True
try:
email_content = render_to_string(
template_name,
{
"pt": payment_transaction,
"site_display_name": self.site_display_name,
"site_url": self.site_url,
"user_in_texas": user_in_texas,
},
)
self.email.body = email_content
self.email.content_type = "html"
if not success:
self.email.subject = _(
"Recurring payment transaction failed on %(dname)s" % {"dname": self.site_display_name}
)
self.email.priority = 1
else:
self.email.subject = _(
"Recurring payment transaction processed on %(dname)s" % {"dname": self.site_display_name}
)
self.email.send()
except TemplateDoesNotExist:
pass
def email_customer_transaction_result(self, payment_transaction):
"""Send customer an email after the transaction is processed.
"""
self.email.recipient = payment_transaction.recurring_payment.user.email
#.........这里部分代码省略.........
开发者ID:ZHW123,项目名称:tendenci,代码行数:101,代码来源:utils.py
示例9: message
def message(request, group_slug, template_name="user_groups/message.html"):
"""
Send a message to the group
"""
from tendenci.apps.emails.models import Email
group = get_object_or_404(Group, slug=group_slug)
EventLog.objects.log(instance=group)
members = GroupMembership.objects.filter(group=group, status=True, status_detail="active")
num_members = members.count()
form = MessageForm(request.POST or None, request=request, num_members=num_members)
if request.method == "POST" and form.is_valid():
email = Email()
email.sender_display = request.user.get_full_name()
email.sender = get_setting("site", "global", "siteemailnoreplyaddress")
email.reply_to = email.sender
email.content_type = email.CONTENT_TYPE_HTML
email.subject = form.cleaned_data["subject"]
email.body = form.cleaned_data["body"]
email.save(request.user)
# send email to myself (testing email)
if form.cleaned_data["is_test"]:
email.recipient = request.user.email
email.send()
messages.add_message(request, messages.SUCCESS, _("Successfully sent test email to yourself"))
EventLog.objects.log(instance=email)
else:
# send email to members
for member in members:
email.recipient = member.member.email
email.send()
messages.add_message(
request,
messages.SUCCESS,
_("Successfully sent email to all %(num)s members in this group" % {"num": num_members}),
)
EventLog.objects.log(instance=email)
return redirect("group.detail", group_slug=group_slug)
else:
print "form errors", form.errors.items()
return render(request, template_name, {"group": group, "num_members": num_members, "form": form})
开发者ID:RMUCapstone-MIS590,项目名称:tendenci,代码行数:55,代码来源:views.py
示例10: process_export
#.........这里部分代码省略.........
# labels
user_fields = ['id',
'first_name',
'last_name',
'email',
'is_active',
'is_staff',
'is_superuser']
profile_fields = ['direct_mail',
'company',
'address',
'address2',
'city',
'state',
'zipcode',
'country',
'phone',
'create_dt']
labels = user_fields + profile_fields
field_dict = OrderedDict([(label.lower().replace(" ", "_"), ''
) for label in labels])
with default_storage.open(file_path_temp, 'wb') as csvfile:
csv_writer = UnicodeWriter(csvfile, encoding='utf-8')
csv_writer.writerow(field_dict.keys())
# process regular group members
count_members = group.members.filter(
group_member__status=True,
group_member__status_detail='active').count()
num_rows_processed = 0
while num_rows_processed < count_members:
users = group.members.filter(
group_member__status=True,
group_member__status_detail='active'
).select_related('profile'
).order_by('group_member__member_id')[num_rows_processed:(num_rows_processed + rows_per_batch)]
num_rows_processed += rows_per_batch
row_dict = field_dict.copy()
for user in users:
if hasattr(user, 'profile'):
profile = user.profile
else:
profile = Profile.objects.create_profile(user)
for field_name in user_fields:
if hasattr(user, field_name):
row_dict[field_name] = getattr(user, field_name)
for field_name in profile_fields:
if hasattr(profile, field_name):
row_dict[field_name] = getattr(profile, field_name)
for k, v in row_dict.items():
if not isinstance(v, basestring):
if isinstance(v, datetime):
row_dict[k] = v.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(v, date):
row_dict[k] = v.strftime('%Y-%m-%d')
else:
row_dict[k] = smart_str(v)
csv_writer.writerow(row_dict.values())
# rename the file name
file_path = '%sgroup_%d_%s_%s.csv' % (file_dir,
group.id,
export_target,
identifier)
default_storage.save(file_path, default_storage.open(file_path_temp, 'rb'))
# delete the temp file
default_storage.delete(file_path_temp)
# notify user that export is ready to download
[user] = User.objects.filter(id=user_id)[:1] or [None]
if user and user.email:
download_url = reverse('group.members_export_download',
args=[group.slug, export_target, identifier])
site_url = get_setting('site', 'global', 'siteurl')
site_display_name = get_setting('site', 'global', 'sitedisplayname')
parms = {
'group': group,
'download_url': download_url,
'user': user,
'site_url': site_url,
'site_display_name': site_display_name}
subject = render_to_string(
'user_groups/exports/export_ready_subject.html', parms)
subject = subject.strip('\n').strip('\r')
body = render_to_string(
'user_groups/exports/export_ready_body.html', parms)
email = Email(
recipient=user.email,
subject=subject,
body=body)
email.send()
开发者ID:goetzk,项目名称:tendenci,代码行数:101,代码来源:utils.py
示例11: process_export
def process_export(identifier, user_id):
field_list = [
'guid',
'slug',
'timezone',
'headline',
'summary',
'body',
'source',
'first_name',
'last_name',
'phone',
'fax',
'email',
'website',
'release_dt',
'syndicate',
'featured',
'design_notes',
'tags',
'enclosure_url',
'enclosure_type',
'enclosure_length',
'not_official_content',
'entity',
]
identifier = identifier or int(ttime.time())
file_name_temp = 'export/articles/%s_temp.csv' % (identifier)
with default_storage.open(file_name_temp, 'wb') as csvfile:
csv_writer = UnicodeWriter(csvfile, encoding='utf-8')
csv_writer.writerow(field_list)
articles = Article.objects.filter(status_detail='active')
for article in articles:
items_list = []
for field_name in field_list:
item = getattr(article, field_name)
if isinstance(item, datetime):
item = item.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(item, date):
item = item.strftime('%Y-%m-%d')
elif isinstance(item, time):
item = item.strftime('%H:%M:%S')
elif isinstance(item, basestring):
item = item.encode("utf-8")
item = smart_str(item).decode('utf-8')
items_list.append(item)
csv_writer.writerow(items_list)
# rename the file name
file_name = 'export/articles/%s.csv' % identifier
default_storage.save(file_name, default_storage.open(file_name_temp, 'rb'))
# delete the temp file
default_storage.delete(file_name_temp)
# notify user that export is ready to download
[user] = User.objects.filter(pk=user_id)[:1] or [None]
if user and user.email:
download_url = reverse('article.export_download', args=[identifier])
site_url = get_setting('site', 'global', 'siteurl')
site_display_name = get_setting('site', 'global', 'sitedisplayname')
parms = {
'download_url': download_url,
'user': user,
'site_url': site_url,
'site_display_name': site_display_name,
'date_today': datetime.now()}
subject = render_to_string(
'articles/notices/export_ready_subject.html', parms)
subject = subject.strip('\n').strip('\r')
body = render_to_string(
'articles/notices/export_ready_body.html', parms)
email = Email(
recipient=user.email,
subject=subject,
body=body)
email.send()
开发者ID:BIGGANI,项目名称:tendenci,代码行数:86,代码来源:utils.py
示例12: process_invoice_export
#.........这里部分代码省略.........
'arrival_date_time',
'greeting',
'instructions',
'po',
'terms',
'due_date',
'ship_date',
'ship_via',
'fob',
'project',
'other',
'message',
'subtotal',
'shipping',
'shipping_surcharge',
'box_and_packing',
'tax_exempt',
'tax_exemptid',
'tax_rate',
'taxable',
'tax',
'variance',
'discount_amount',
'total',
'payments_credits',
'balance',
'disclaimer',
'variance_notes',
'admin_notes',
'create_dt',
'update_dt',
'creator',
'creator_username',
'owner',
'owner_username',
'status_detail']
identifier = identifier or int(ttime.time())
file_name_temp = 'export/invoices/%s_temp.csv' % identifier
with default_storage.open(file_name_temp, 'wb') as csvfile:
csv_writer = UnicodeWriter(csvfile, encoding='utf-8')
csv_writer.writerow(fields)
invoices = Invoice.objects.filter(status=True,
update_dt__gte=start_dt,
update_dt__lte=end_dt)
for invoice in invoices:
items_list = []
for field_name in fields:
item = getattr(invoice, field_name)
if item is None:
item = ''
if item:
if isinstance(item, datetime):
item = item.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(item, date):
item = item.strftime('%Y-%m-%d')
elif isinstance(item, time):
item = item.strftime('%H:%M:%S')
elif isinstance(item, basestring):
item = item.encode("utf-8")
item = smart_str(item).decode('utf-8')
items_list.append(item)
csv_writer.writerow(items_list)
# rename the file name
file_name = 'export/invoices/%s.csv' % identifier
default_storage.save(file_name, default_storage.open(file_name_temp, 'rb'))
# delete the temp file
default_storage.delete(file_name_temp)
# notify user that export is ready to download
[user] = User.objects.filter(pk=user_id)[:1] or [None]
if user and user.email:
download_url = reverse('invoice.export_download', args=[identifier])
site_url = get_setting('site', 'global', 'siteurl')
site_display_name = get_setting('site', 'global', 'sitedisplayname')
parms = {
'download_url': download_url,
'user': user,
'site_url': site_url,
'site_display_name': site_display_name,
'start_dt': start_dt,
'end_dt': end_dt}
subject = render_to_string(
'invoices/notices/export_ready_subject.html', parms)
subject = subject.strip('\n').strip('\r')
body = render_to_string(
'invoices/notices/export_ready_body.html', parms)
email = Email(
recipient=user.email,
subject=subject,
body=body)
email.send()
开发者ID:goetzk,项目名称:tendenci,代码行数:101,代码来源:utils.py
示例13: process_export
#.........这里部分代码省略.........
'country',
'phone',
'phone2',
'fax',
'work_phone',
'home_phone',
'mobile_phone',
'url',
'url2',
'dob',
'status_detail']
else:
# base ------------
base_field_list = [
smart_str(field.name) for field in TendenciBaseModel._meta.fields
if not field.__class__ == AutoField]
# user ------------
user_field_list = [
smart_str(field.name) for field in User._meta.fields
if not field.__class__ == AutoField]
user_field_list.remove('password')
# profile ---------
profile_field_list = [
smart_str(field.name) for field in Profile._meta.fields
if not field.__class__ == AutoField]
profile_field_list = [
name for name in profile_field_list
if not name in base_field_list]
profile_field_list.remove('guid')
profile_field_list.remove('user')
# append base fields at the end
field_list = user_field_list + profile_field_list
identifier = identifier or int(ttime.time())
file_name_temp = 'export/profiles/%s_temp.csv' % identifier
with default_storage.open(file_name_temp, 'wb') as csvfile:
csv_writer = UnicodeWriter(csvfile, encoding='utf-8')
csv_writer.writerow(field_list)
profiles = Profile.objects.all()
for profile in profiles:
p_user = profile.user
items_list = []
for field_name in field_list:
if field_name in profile_field_list:
item = getattr(profile, field_name)
elif field_name in user_field_list:
item = getattr(p_user, field_name)
else:
item = ''
if item:
if isinstance(item, datetime):
item = item.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(item, date):
item = item.strftime('%Y-%m-%d')
elif isinstance(item, time):
item = item.strftime('%H:%M:%S')
elif isinstance(item, basestring):
item = item.encode("utf-8")
item = smart_str(item).decode('utf-8')
items_list.append(item)
csv_writer.writerow(items_list)
# rename the file name
file_name = 'export/profiles/%s.csv' % identifier
default_storage.save(file_name, default_storage.open(file_name_temp, 'rb'))
# delete the temp file
default_storage.delete(file_name_temp)
# notify user that export is ready to download
[user] = User.objects.filter(pk=user_id)[:1] or [None]
if user and user.email:
download_url = reverse('profile.export_download', args=[identifier])
site_url = get_setting('site', 'global', 'siteurl')
site_display_name = get_setting('site', 'global', 'sitedisplayname')
parms = {
'download_url': download_url,
'user': user,
'site_url': site_url,
'site_display_name': site_display_name,
'export_fields': export_fields}
subject = render_to_string(
'profiles/notices/export_ready_subject.html', parms)
subject = subject.strip('\n').strip('\r')
body = render_to_string(
'profiles/notices/export_ready_body.html', parms)
email = Email(
recipient=user.email,
subject=subject,
body=body)
email.send()
开发者ID:ediaz1,项目名称:tendenci,代码行数:101,代码来源:utils.py
示例14: handle
def handle(self, *args, **options):
from tendenci.apps.events.models import Event, Registrant, Organizer
from tendenci.apps.emails.models import Email
from tendenci.apps.site_settings.utils import get_setting
from tendenci.apps.base.utils import convert_absolute_urls
from tendenci.apps.events.utils import (render_event_email,
get_default_reminder_template)
verbosity = options['verbosity']
site_url = get_setting('site', 'global', 'siteurl')
now = datetime.now()
today_tuple = (datetime(now.year, now.month, now.day, 0, 0, 0),
datetime(now.year, now.month, now.day, 23, 59, 59))
# get a list of upcoming events that are specified to send reminders.
events = Event.objects.filter(start_dt__gt=now,
registration_configuration__enabled=True,
registration_configuration__send_reminder=True,
status=True,
status_detail='active')
events_list = []
if events:
for event in events:
reg_conf = event.registration_configuration
reminder_days = reg_conf.reminder_days
if not reminder_days:
reminder_days = '1'
days_list = reminder_days.split(',')
for day in days_list:
try:
day = int(day)
except:
continue
start_dt = event.start_dt - timedelta(days=day)
if today_tuple[0] <= start_dt and start_dt <= today_tuple[1]:
events_list.append(event)
for event in events_list:
registrants = Registrant.objects.filter(
reminder=True,
registration__event=event,
cancel_dt=None
)
reg_conf = event.registration_configuration
[organizer] = Organizer.objects.filter(event=event)[:1] or [None]
event.organizer = organizer
email = reg_conf.email
if not email:
email = Email()
if not email.sender_display:
if organizer.name:
email.sender_display = organizer.name
if not email.reply_to:
if organizer.user and organizer.user.email:
email.reply_to = organizer.user.email
if not email.subject:
email.subject = 'Reminder: %s' % event.title
else:
email.subject = 'Reminder: %s' % email.subject
if not email.body:
email.body = get_default_reminder_template(event)
email = render_event_email(event, email)
# replace the relative links with absolute urls
# in the email body and subject
email.body = convert_absolute_urls(email.body, site_url)
event.email = email
self.send_reminders(event, registrants, verbosity=verbosity)
开发者ID:tendenci,项目名称:tendenci,代码行数:80,代码来源:send_event_reminders.py
示例15: send_newsletter
def send_newsletter(self, newsletter_id, **kwargs):
from tendenci.apps.emails.models import Email
from tendenci.apps.newsletters.models import Newsletter
from tendenci.apps.site_settings.utils import get_setting
from tendenci.apps.base.utils import validate_email
from tendenci.apps.newsletters.utils import get_newsletter_connection
connection = get_newsletter_connection()
if not connection:
print('Exiting..Please set up your newsletter email provider before proceeding.')
return
print("Started sending newsletter...")
if newsletter_id == 0:
raise CommandError('Newsletter ID is required. Usage: ./manage.py send_newsletter <newsletter_id>')
newsletter = Newsletter.objects.filter(pk=int(newsletter_id))
if newsletter.exists():
newsletter = newsletter[0]
else:
newsletter = None
if not newsletter:
raise CommandError('You are trying to send a newsletter that does not exist.')
if newsletter.send_status == 'queued':
newsletter.send_status = 'sending'
elif newsletter.send_status == 'sent':
newsletter.send_status = 'resending'
elif newsletter.send_status == 'resent':
newsletter.send_status == 'resending'
newsletter.save()
recipients = newsletter.get_recipients()
email = newsletter.email
# replace relative to absolute urls
self.site_url = get_setting('site', 'global', 'siteurl')
email.body = email.body.replace("src=\"/", "src=\"%s/" % self.site_url)
email.body = email.body.replace("href=\"/", "href=\"%s/" % self.site_url)
counter = 0
for recipient in recipients:
# skip if not a valid email address
if not validate_email(recipient.member.email):
continue
subject = email.subject
body = email.body
if '[firstname]' in subject:
subject = subject.replace('[firstname]', recipient.member.first_name)
if '[lastname]' in subject:
subject = subject.replace('[lastname]', recipient.member.last_name)
if '[username]' in body:
body = body.replace('[username]', recipient.member.username)
if '[firstname]' in body:
body = body.replace('[firstname]', recipient.member.first_name)
if '[unsubscribe_url]' in body:
#body = body.replace('[unsubscribe_url]', recipient.noninteractive_unsubscribe_url)
# The unsubscribe_url link should be something like <a href="[unsubscribe_url]">Unsubscribe</a>.
# But it can be messed up sometimes. Let's prevent that from happening.
p = r'(href=\")([^\"]*)(\[unsubscribe_url\])(\")'
body = re.sub(p, r'\1' + recipient.noninteractive_unsubscribe_url + r'\4', body)
if '[browser_view_url]' in body:
body = body.replace('[browser_view_url]', newsletter.get_browser_view_url())
email_to_send = Email(
subject=subject,
body=body,
sender=email.sender,
sender_display=email.sender_display,
reply_to=email.reply_to,
recipient=recipient.member.email
)
print(u"Sending to {}".format(unicode(recipient.member.email)))
email_to_send.send(connection=connection)
counter += 1
print(u"Newsletter sent to {}".format(unicode(recipient.member.email)))
if newsletter.send_to_email2 and hasattr(recipient.member, 'profile') \
and validate_email(recipient.member.profile.email2):
email_to_send.recipient = recipient.member.profile.email2
email_to_send.send(connection=connection)
counter += 1
print(u"Newsletter sent to {}".format(unicode(recipient.member.profile.email2)))
if newsletter.send_status == 'sending':
newsletter.send_status = 'sent'
newsletter.date_email_sent = datetime.datetime.now()
#.........这里部分代码省略.........
开发者ID:goetzk,项目名称:tendenci,代码行数:101,代码来源:send_newsletter.py
示例16: form_detail
def form_detail(request, slug, template="forms/form_detail.html"):
"""
Display a built form and handle submission.
"""
published = Form.objects.published(for_user=request.user)
form = get_object_or_404(published, slug=slug)
if not has_view_perm(request.user,'forms.view_form',form):
raise Http403
# If form has a recurring payment, make sure the user is logged in
if form.recurring_payment:
[email_field] = form.fields.filter(field_type__iexact='EmailVerificationField')[:1] or [None]
if request.user.is_anonymous and not email_field:
# anonymous user - if we don't have the email field, redirect to login
response = redirect('auth_login')
response['Location'] += '?next=%s' % form.get_absolute_url()
return response
if request.user.is_superuser and not email_field:
messages.add_message(request, messages.WARNING,
'Please edit the form to include an email field ' +
'as it is required for setting up a recurring ' +
'payment for anonymous users.')
form_for_form = FormForForm(form, request.user, request.POST or None, request.FILES or None)
if form.custom_payment and not form.recurring_payment:
billing_form = BillingForm(request.POST or None)
if request.user.is_authenticated:
billing_form.initial = {
'first_name':request.user.first_name,
'last_name':request.user.last_name,
'email':request.user.email}
else:
billing_form = None
for field in form_for_form.fields:
field_default = request.GET.get(field, None)
if field_default:
form_for_form.fields[field].initial = field_default
if request.method == "POST":
if form_for_form.is_valid() and (not billing_form or billing_form.is_valid()):
entry = form_for_form.save()
entry.entry_path = request.POST.get("entry_path", "")
if request.user.is_anonymous:
if entry.get_email_address():
emailfield = entry.get_email_address()
firstnamefield = entry.get_first_name()
lastnamefield = entry.get_last_name()
phonefield = entry.get_phone_number()
password = ''
for i in range(0, 10):
password += random.choice(string.ascii_lowercase + string.ascii_uppercase)
user_list = User.objects.filter(email=emailfield).order_by('-last_login')
if user_list:
anonymous_creator = user_list[0]
else:
anonymous_creator = User(username=emailfield[:30], email=emailfield,
first_name=firstnamefield, last_name=lastnamefield)
anonymous_creator.set_password(password)
anonymous_creator.is_active = False
anonymous_creator.save()
anonymous_profile = Profile(user=anonymous_creator, owner=anonymous_creator,
creator=anonymous_creator, phone=phonefield)
anonymous_profile.save()
entry.creator = anonymous_creator
else:
entry.creator = request.user
entry.save()
entry.set_group_subscribers()
# Email
subject = generate_email_subject(form, entry)
email_headers = {} # content type specified below
if form.email_from:
email_headers.update({'Reply-To':form.email_from})
# Email to submitter
# fields aren't included in submitter body to prevent spam
submitter_body = generate_submitter_email_body(entry, form_for_form)
email_from = form.email_from or settings.DEFAULT_FROM_EMAIL
email_to = form_for_form.email_to()
is_spam = Email.is_blocked(email_to)
if is_spam:
# log the spam
description = "Email \"{0}\" blocked because it is listed in email_blocks.".format(email_to)
EventLog.objects.log(instance=form, description=description)
if form.completion_url:
return HttpResponseRedirect(form.completion_url)
return redirect("form_sent", form.slug)
email = Email()
email.subject = subject
email.reply_to = form.email_from
if email_to and form.send_email and form.email_text:
# Send message to the per
|
请发表评论