def send_email(to_address, subject, content, html_content, bcc_address=None, attachment=None, attachment2=None, attachment3=None): new_message = MailerMessage() new_message.subject = subject new_message.to_address = to_address if bcc_address: new_message.bcc_address = bcc_address new_message.from_address = settings.DEFAULT_FROM_EMAIL new_message.content = content new_message.html_content = html_content new_message.cc_address = settings.DEFAULT_CC_EMAIL if attachment: new_message.add_attachment(attachment) if attachment2: new_message.add_attachment(attachment2) if attachment3: new_message.add_attachment(attachment3) new_message.app = "our app name" new_message.save()
def send_mail(subject, body, from_email, recipient_list, body_html=None, internal_sender_id=None): """ Simplified version of the send_mail function which queues e-mails in the mail queue """ mails = [] for recipient in recipient_list: new_message = MailerMessage() new_message.subject = subject new_message.to_address = recipient new_message.from_address = from_email new_message.content = body if body_html is not None: new_message.html_content = body_html if internal_sender_id is None: new_message.app = "selvbetjening" else: new_message.app = internal_sender_id new_message.save() mails.append(new_message) return mails
def dynamic_form_send_confirmation_email(form_model, form, advert, request): from django.template import Template, Context ctx = {"ad": advert, "advert": advert} if advert.confirmation_email_subject: subject = Template(advert.confirmation_email_subject).render(Context(ctx)) else: subject = advert.title if advert.confirmation_email: message = Template(advert.confirmation_email).render(Context(ctx)) else: message = render_to_string("dynamic_forms/confirmation_email.txt", ctx) new_message = MailerMessage() new_message.subject = subject new_message.to_address = form.cleaned_data["email"] new_message.bcc_address = ( "%s, [email protected]" % advert.advertiser.roof_contact ) # settings.DYNAMIC_FORMS_EMAIL_HIDDEN_RECIPIENTS new_message.reply_to = advert.advertiser.email new_message.from_address = "*****@*****.**" new_message.from_name = "Roof Media" new_message.content = "" new_message.html_content = message new_message.app = "dynamic_forms" new_message.save()
def send_email_visitor(self): # send email to requesting email # this method is called with cleaned from data subject = "Ihre Nachricht an mentoki" to = [self.cleaned_data['email']] from_mail = '*****@*****.**' # prepare template context = { 'name': self.cleaned_data['name'], 'email': self.cleaned_data['email'], 'message': self.cleaned_data['message'], 'betreff': "Ihre Nachricht", } message = get_template('email/contact/to_customer.html').render( Context(context)) to_customer = MailerMessage() to_customer.subject = "Ihre Nachricht an mentoki" to_customer.to_address = self.cleaned_data['email'] to_customer.from_address = ContactForm.CONTACT_EMAIL to_customer.content = ContactForm.OUTGOING to_customer.html_content = message to_customer.reply_to = ContactForm.CONTACT_EMAIL to_customer.app = self.__module__ to_customer.save()
def dynamic_form_send_email(form_model, form, advert, request): mapped_data = form.get_mapped_data() ctx = {"form_model": form_model, "form": form, "data": sorted(mapped_data.items()), "ad": advert} if advert.notification_email_subject: subject = Template(advert.notification_email_subject).render(Context(ctx)) else: subject = _("Has recibido una nueva oportunidad de venta") if advert.notification_email: message = Template(advert.notification_email).render(Context(ctx)) else: message = render_to_string("dynamic_forms/notification_email.txt", ctx) new_message = MailerMessage() new_message.subject = subject new_message.to_address = advert.advertiser.email new_message.bcc_address = ( "%s, [email protected]" % advert.advertiser.roof_contact ) # settings.DYNAMIC_FORMS_EMAIL_HIDDEN_RECIPIENTS new_message.from_address = "*****@*****.**" new_message.from_name = "Roof Media" new_message.content = "" new_message.html_content = message new_message.app = "dynamic_forms" new_message.save()
def create_mail_message(): """Here gives email subject , to_address email id , from_address email id , content of messaage , html_contennt of message""" new_message = MailerMessage() new_message.subject = "My Subject" new_message.to_address = "*****@*****.**" new_message.from_address = "*****@*****.**" new_message.content = "Mail content" new_message.html_content = "<h1>Mail Content</h1>" new_message.app = "this is test email please ignore." new_message.save()
def sendmail(singername, receiver, title, url, time): new_message = MailerMessage() new_message.subject = singername + "演唱會資訊 from Hiticket" new_message.to_address = receiver new_message.bcc_address = "" new_message.from_address = "*****@*****.**" new_message.content = "" new_message.html_content = "哈囉, 有新的一筆關於" + singername + "演唱會的資料如下:<br><br> \n\n 時間: " + time + "<br>\n Title: " + title + "<br>\n Link: " + url new_message.app = "Name of your App that is sending the email." new_message.save()
def send_email(sender, instance, created, **kwargs): if instance.source != 2 and created: message = render_to_string('analytics/saleoportunity_email.txt', {'sopt': instance}) new_message = MailerMessage() new_message.subject = _('Has recibido una nueva oportunidad de venta') new_message.to_address = instance.ad.advertiser.email new_message.from_address = '*****@*****.**' new_message.from_name = 'Roof Media' new_message.html_content = message new_message.app = "analytics" new_message.save()
def create_mail_message(request): new_message = MailerMessage() new_message.subject = "My Subject" new_message.to_address = "*****@*****.**" new_message.bcc_address = "*****@*****.**" new_message.from_address = "*****@*****.**" new_message.content = "Mail content" new_message.html_content = "<h1>Mail Content</h1>" new_message.app = "Name of your App that is sending the email." new_message.save() return render(request, 'index.html')
def send_greeting_email(instance, **kwargs): is_new = kwargs.get('created', None) if is_new: new_message = MailerMessage() new_message.subject = u"Спасибо за регистрацию!" new_message.to_address = instance.email # new_message.bcc_address = "*****@*****.**" new_message.from_address = "*****@*****.**" new_message.html_content = render_to_string('email/greeting.html') new_message.content = new_message.html_content # new_message.app = "Name of your App that is sending the email." new_message.do_not_send = True new_message.save()
def _setup_email(self): msg = MailerMessage() msg.from_address = self.from_address msg.to_address = self._get_formatted_recipients(self.to) if self.cc: msg.cc_address = self._get_formatted_recipients(self.cc) full_bcc = self._get_bcc_with_debugging_copy() if full_bcc: msg.bcc_address = self._get_formatted_recipients(full_bcc) msg.subject = self.get_rendered_subject() msg.html_content = self.get_rendered_html_body() msg.content = self.get_plain_text_body() msg.app = self.mail.text_identifier return msg
def send_email(subject, message, recipients, html=False, attachments=None, order=None): """Send emails Parameters ---------- subject: str The subject of the email message: str Body of the email recipients: list An iterable with django users representing the recipients of the email html: bool, optional Whether the e-mail should be sent in HTML or plain text """ already_emailed = [] custom_recipient_handler = oseo_settings.get_mail_recipient_handler() if custom_recipient_handler is not None: logger.debug("Calling custom recipient handler code...") handler = utilities.import_callable(custom_recipient_handler) final_recipients = handler(subject, message, current_recipients=recipients, order=order) else: final_recipients = [r.email for r in recipients] logger.debug("email recipients: {}".format(final_recipients)) for address in final_recipients: if address != "" and address not in already_emailed: msg = MailerMessage(subject=subject, to_address=address, from_address=django_settings.EMAIL_HOST_USER, app="oseoserver") if html: text_content = html2text(message) msg.content = text_content msg.html_content = message else: msg.content = message if attachments is not None: for a in attachments: msg.add_attachment(a) msg.save() already_emailed.append(address)
def send_mail(subject, message, to, sender='*****@*****.**'): """ Send an email :param subject: String subject of the email :param message: Text body of the email :param to: String email receiver :param sender: String email sender """ mail = MailerMessage() mail.subject = subject mail.to_address = to mail.from_address = sender mail.html_content = message mail.app = 'Appetments' mail.save()
def get_email(self, request): from mailqueue.models import MailerMessage new_message = MailerMessage() new_message.subject = "oui c'est bien ce mail ..." new_message.to_address = "*****@*****.**" #new_message.bcc_address = "*****@*****.**" new_message.from_address = "*****@*****.**" new_message.content = "Mail content" new_message.html_content = "<h1>Mail Content</h1>" new_message.app = "Name of your App that is sending the email." new_message.save() return Response(new_message.html_content)
def dynamic_form_send_download_email(form_model, form, advert, request): from content.models import DownloadLink import hashlib import random salt2 = "".join(["{0}".format(random.randrange(10)) for i in range(10)]) key = hashlib.md5("{0}{1}".format(salt2, advert.file.name)).hexdigest() src = "/".join([settings.MEDIA_ROOT, advert.file.name]) download_root = os.path.join(settings.MEDIA_ROOT, "downloads") download_url = os.path.join(settings.MEDIA_URL, "downloads") dst = os.path.join(download_root, key + ".pdf") dst_url = os.path.join(download_url, key + ".pdf") link = DownloadLink(key=key, ad=advert, url=dst_url, filepath=dst) site_url = request.build_absolute_uri("/") dl_url = site_url[:-1] + dst_url request.META["DL_URL"] = dl_url ctx = {"dl_url": dl_url, "ad": advert} if advert.confirmation_email_subject: subject = Template(advert.confirmation_email_subject).render(Context({"ad": advert})) else: subject = _("Descarga: “%(advert)s”") % {"advert": advert.title} if advert.confirmation_email: message = Template(advert.confirmation_email).render(Context(ctx)) else: message = render_to_string("dynamic_forms/download_email.txt", ctx) new_message = MailerMessage() new_message.subject = subject new_message.to_address = form.cleaned_data["email"] new_message.bcc_address = ( "%s, [email protected]" % advert.advertiser.roof_contact ) # settings.DYNAMIC_FORMS_EMAIL_HIDDEN_RECIPIENTS new_message.reply_to = advert.advertiser.email new_message.from_address = "*****@*****.**" new_message.from_name = "Roof Media" new_message.content = "" new_message.html_content = message new_message.app = "dynamic_forms" new_message.save() link.save() if not os.path.isdir(os.path.dirname(dst)): os.makedirs(os.path.dirname(dst)) os.symlink(src, dst)
def send(msg): tos = msg.to + msg.bcc for to in tos: new_message = MailerMessage() new_message.subject = msg.subject new_message.to_address = to new_message.from_address = msg.from_email new_message.content = msg.body if len(msg.alternatives) > 0: new_message.html_content = msg.alternatives[0][0] new_message.reply_to = next(iter(msg.reply_to or []),None) for a in msg.attachments: with open(a[0], 'wb') as f: f.write(a[1]) at = File(open(a[0], 'rb')) new_message.add_attachment(at) new_message.save()
def test_mail_sending(self): from mailqueue.models import MailerMessage new_message = MailerMessage() new_message.subject = "Your test worked." new_message.to_address = os.environ['EMAIL_TEST_RECIPIENT'] # if using Google SMTP, the actual from address will be settings.EMAIL_HOST_USER new_message.from_address = "*****@*****.**" new_message.content = "Your mail was successfully transmitted at {} Z".format(datetime.datetime.utcnow()) # Note: HTML content supersedes plain content on Google messages new_message.html_content = "<h1>This is HTML Mail Content</h1><br>{}".format(new_message.content) new_message.app = "SAM Reports" new_message.save() assert True # always passes if it does not crash
def test_mail_sending(self): from mailqueue.models import MailerMessage new_message = MailerMessage() new_message.subject = "Your test worked." new_message.to_address = os.environ['EMAIL_TEST_RECIPIENT'] # if using Google SMTP, the actual from address will be settings.EMAIL_HOST_USER new_message.from_address = "*****@*****.**" new_message.content = "Your mail was successfully transmitted at {} Z".format( datetime.datetime.utcnow()) # Note: HTML content supersedes plain content on Google messages new_message.html_content = "<h1>This is HTML Mail Content</h1><br>{}".format( new_message.content) new_message.app = "SAM Reports" new_message.save() assert True # always passes if it does not crash
def send_announcement(announcement, courseevent, module): """ Send an announcement: it is send to the teachers and the particpants. Mentoki is set on CC. Sending uses django-mailqueue, so that send out emails are als stored in the database. """ participants_emails = \ list(CourseEventParticipation.objects.learners_emails(courseevent=courseevent)) teachers_emails = \ list(CourseOwner.objects.teachers_emails(course=courseevent.course)) all_emails = participants_emails + teachers_emails send_all = ", ".join(all_emails) context = { 'site': Site.objects.get_current(), 'courseevent': courseevent, 'announcement': announcement, 'owners': courseevent.teachers, 'betreff': "Neue Nachricht von Mentoki %s" % courseevent.title } message = get_template('email/announcement/announcement.html').render( Context(context)) mail_message = MailerMessage() mail_message.subject = "Neue Nachricht von %s" % courseevent.title mail_message.bcc_address = settings.MENTOKI_COURSE_EMAIL mail_message.to_address = send_all mail_message.from_address = settings.MENTOKI_COURSE_EMAIL mail_message.content = "Neue Nachricht von %s and die Teilnehmer" % courseevent.title mail_message.html_content = message mail_message.reply_to = send_all mail_message.app = module mail_distributer = send_all logger.info("[%s] [Ankündigung %s %s]: als email verschickt an %s" % (courseevent, announcement.id, announcement, mail_distributer)) mail_message.save() return mail_distributer
def send_email_self(self): """ email is send to mentoki """ context = { 'name': self.cleaned_data['name'], 'email': self.cleaned_data['email'], 'message': self.cleaned_data['message'], 'betreff': "Nachricht an mentoki", } message = get_template('email/contact/to_mentoki.html').render( Context(context)) to_mentoki = MailerMessage() to_mentoki.subject = "Kontaktanfrage an mentoki" to_mentoki.to_address = ContactForm.CONTACT_EMAIL to_mentoki.from_address = self.cleaned_data['email'] to_mentoki.content = ContactForm.INTERNAL to_mentoki.html_content = message to_mentoki.reply_to = self.cleaned_data['email'] to_mentoki.app = self.__module__ to_mentoki.save()
import sys, os sys.path.append(os.path.join(os.path.dirname(__file__) + '../', 'web')) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web.settings") from django.conf import settings from mailqueue.models import MailerMessage new_message = MailerMessage() new_message.subject = "My Subject" new_message.to_address = "*****@*****.**" new_message.bcc_address = "" new_message.from_address = "*****@*****.**" new_message.content = "Mail content" new_message.html_content = "<h1>Mail Content</h1>" new_message.app = "Name of your App that is sending the email." new_message.save()
def handle(self, *args, **options): # get all fresh funded exhibits exhibits = Exhibit.objects.full_fund_pause().filter( funded_unixtime__gte=time() - 5 * 60) users = Profile.objects.all() for exhibit in exhibits: # send email message = 'Item "%s" was fully funded. Bidding will be opened in few minutes. ' \ 'Join the bidding at http://www.exhibia.com' % exhibit.item.name params = { 'access_token': settings.FACEBOOK_APP_TOKEN, 'template': message, 'href': '#' } for user in users: if user.email: email = MailerMessage() email.subject = 'Bidding Alert' email.from_address = settings.DEFAULT_FROM_EMAIL email.html_content = message email.to_address = user.email try: email.save() except Exception as e: self.stdout.write('Can\'t send email to %s %s' % (email.to_address, e)) # check if user have fb accociation if user.is_facebook_verified(): try: req = urllib2.Request( "https://graph.facebook.com/%s/notifications" % user.social_auth.filter( provider='facebook')[0].uid, urllib.urlencode(params), {}) urllib2.urlopen(req).read() except (urllib2.HTTPError, KeyError) as error_message: self.stdout.write( 'FAcebook error while sending message to user %s %s' % (user.username, error_message)) if user.phone: sms = SmsMessage() client = TwilioRestClient(settings.ACCOUNT_SID, settings.AUTH_TOKEN) try: client.sms.messages.create(body=message, to=user.phone, from_=settings.FROM_NUMBER) except twilio.TwilioRestException as error_message: sms.status = 'error' sms.error_message = str(error_message)[:500] self.stdout.write( 'TwilioRestExceptionr for user %s %s' % (user.username, error_message)) else: sms.status = 'success' sms.save()
def verify(request, verification_type): verification_profile = VerificationProfile.objects.create_profile( request.user, verification_type=verification_type) initial = dict() if verification_profile.is_email(): if request.user.is_email_verified: return render(request, 'account/modal_already_verified.html', {'verification_type': verification_type}) form_class = EmailVerificationForm form_action = reverse('verify-email') if request.user.email: initial['email'] = request.user.email else: if request.user.is_phone_verified: return render(request, 'account/modal_already_verified.html', {'verification_type': verification_type}) form_class = PhoneVerificationForm form_action = reverse('verify-phone') if request.user.phone: initial['phone'] = request.user.phone if request.method == "POST": form = form_class(data=request.POST, instance=verification_profile) if form.is_valid(): # if there were old verification entry replace its verification code and other params with the new ones try: verification_profile = VerificationProfile.objects.get( user=request.user, type=verification_type) verification_profile.email = form.instance.email verification_profile.phone = form.instance.phone verification_profile.verification_key = form.instance.verification_key verification_profile.attempts += 1 verification_profile.save() except VerificationProfile.DoesNotExist: verification_profile = form.save() # don't send message if user send too many attemps if verification_profile.attempts > 6: msg = "You have exceeded your attemps. Please contact administrator" response = dict(phone=msg, email=msg) return HttpResponse( json.dumps({ 'response': response, 'result': 'error' })) # send email verification if verification_profile.is_email(): subject = 'Verification email from %s' % settings.SITE link = reverse('verify-check-key', kwargs={ 'verification_key': verification_profile.verification_key }) html_message = render_to_string( 'account/verification_email.txt', { 'link': link, 'site': settings.SITE }) new_message = MailerMessage() new_message.subject = subject new_message.to_address = verification_profile.email new_message.from_address = settings.DEFAULT_FROM_EMAIL new_message.html_content = html_message new_message.save() # send phone verification else: client = TwilioRestClient(settings.ACCOUNT_SID, settings.AUTH_TOKEN) sms = SmsMessage(verification=verification_profile) try: client.sms.messages.create( body='Verification code is %s' % verification_profile.verification_key, to=verification_profile.phone, from_=settings.FROM_NUMBER) except twilio.TwilioRestException as error_message: response = dict( phone="Can't send message. Please contact administrator" ) sms.status = 'error' sms.error_message = str(error_message)[:500] sms.save() return HttpResponse( json.dumps({ 'response': response, 'result': 'error' })) else: sms.status = 'success' sms.save() callback_js = "$('#ModalVerify').modal('hide');" return HttpResponse( json.dumps({ 'result': 'success', 'callback_js': callback_js })) else: response = {} for k in form.errors: response[k] = form.errors[k][0] return HttpResponse( json.dumps({ 'response': response, 'result': 'error' })) else: form = form_class(initial=initial) return render( request, 'account/modal_verify.html', { 'form': form, 'verification_type': verification_type, 'form_action': form_action })