Esempio n. 1
0
    def serve(self, request, *args, **kwargs):
        if request.is_ajax() and request.method == "POST":
            form = GoogleAdGrantApplicationForm(request.POST)
            if form.is_valid():
                form.save()

                if self.to_address:
                    subject = "{} form submission".format(self.title)
                    content = '\n'.join([
                        x[1].label + ': ' + str(form.data.get(x[0]))
                        for x in form.fields.items()
                    ])
                    send_mail(
                        subject,
                        content,
                        [self.to_address],
                    )
                return render(
                    request,
                    'torchbox/includes/ad_grant_application_landing.html', {
                        'self': self,
                        'form': form
                    })
            else:
                return render(
                    request,
                    'torchbox/includes/ad_grant_application_form.html', {
                        'self': self,
                        'form': form
                    })
        else:
            return super(GoogleAdGrantsPage, self).serve(request)
Esempio n. 2
0
    def test_send_html_email(self):
        """Test that the kwarg 'html_message' works as expected on send_mail by creating 'alternatives' on the EmailMessage object"""

        send_mail("Test HTML subject",
                  "TEXT content", ["*****@*****.**"],
                  html_message="<h2>Test HTML content</h2>")
        send_mail("Test TEXT subject", "TEXT content",
                  ["*****@*****.**"])

        # Check that the emails were sent
        self.assertEqual(len(mail.outbox), 2)

        # check that the first email is the HTML email
        email_message = mail.outbox[0]
        self.assertEqual(email_message.subject, "Test HTML subject")
        self.assertEqual(email_message.alternatives,
                         [('<h2>Test HTML content</h2>', 'text/html')])
        self.assertEqual(
            email_message.body, "TEXT content"
        )  # note: plain text will always be added to body, even with alternatives
        self.assertEqual(email_message.to, ["*****@*****.**"])

        # confirm that without html_message kwarg we do not get 'alternatives'
        email_message = mail.outbox[1]
        self.assertEqual(email_message.subject, "Test TEXT subject")
        self.assertEqual(email_message.alternatives, [])
        self.assertEqual(email_message.body, "TEXT content")
        self.assertEqual(email_message.to, ["*****@*****.**"])
Esempio n. 3
0
    def process_form_submission(self, form):
        submission = super().process_form_submission(form)
        if self.send_confirmation_mail:
            # find mail field
            mail_field = self.form_fields.get(
                label=self.confirmation_mail_field)
            clean_mail_field = mail_field.clean_name

            address = form[clean_mail_field].value()
            html_content = render_to_string(
                "core/mails/form_confirmation.html",
                {
                    "confirmation_mail_text": self.confirmation_mail_text,
                    "title": self.title,
                },
            )
            text_content = html2text.html2text(self.confirmation_mail_text)
            send_mail(
                self.confirmation_mail_subject,
                text_content,
                [address],
                self.from_address,
                html_message=html_content,
            )
        return submission
Esempio n. 4
0
 def send_mail(self, form):
     addresses = [x.strip() for x in self.to_address.split(",")]
     send_mail(
         self.subject,
         self.render_email(form),
         addresses,
         self.from_address,
     )
Esempio n. 5
0
 def send_user_mail(self, form):
     """Sends the email notification to the user who submitted the form.
     Depends on there being a form field labelled 'Email'"""
     address = form.cleaned_data.get("email")
     if address:
         send_mail(
             self.subject, self.render_email(form), [address], self.from_address,
         )
Esempio n. 6
0
    def test_send_email(self):
        send_mail("Test subject", "Test content", ["*****@*****.**"], "*****@*****.**")

        # Check that the email was sent
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, "Test subject")
        self.assertEqual(mail.outbox[0].body, "Test content")
        self.assertEqual(mail.outbox[0].to, ["*****@*****.**"])
        self.assertEqual(mail.outbox[0].from_email, "*****@*****.**")
Esempio n. 7
0
    def test_send_fallback_to_default_from_email_setting(self):
        send_mail("Test subject", "Test content", ["*****@*****.**"])

        # Check that the email was sent
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, "Test subject")
        self.assertEqual(mail.outbox[0].body, "Test content")
        self.assertEqual(mail.outbox[0].to, ["*****@*****.**"])
        self.assertEqual(mail.outbox[0].from_email, "*****@*****.**")
Esempio n. 8
0
    def test_send_default_from_email(self):
        send_mail("Test subject", "Test content", ["*****@*****.**"])

        # Check that the email was sent
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, "Test subject")
        self.assertEqual(mail.outbox[0].body, "Test content")
        self.assertEqual(mail.outbox[0].to, ["*****@*****.**"])
        self.assertEqual(mail.outbox[0].from_email, "webmaster@localhost")
Esempio n. 9
0
 def send_mail(self, form):
     addresses = [x.strip() for x in self.to_address.split(',')]
     content = []
     for field in form:
         value = field.value()
         if isinstance(value, list):
             value = ', '.join(value)
         content.append('{}: {}'.format(field.label, value))
     content = '\n'.join(content)
     send_mail(self.subject, content, addresses, self.from_address,)
Esempio n. 10
0
    def send_mail(self, form):
        subject = f"[Contact Us] {form.data['subject']}"
        addresses = [x.strip() for x in self.to_address.split(',')]

        send_mail(
            subject,
            self.render_email(form),
            addresses,
            self.from_address,
        )
Esempio n. 11
0
 def send_mail(self, form):
     # `self` is the FormPage, `form` is the form's POST data on submit
     print(dir(self))
     addresses = [form['podpisatsia-na-rassylku'].value()]
     subject = "Благодарим за доверие"
     content = "Мы благодарим вас за подписку на email рассылку. Мы будем очень аккуратно и редко отправлять концентрированную информацию вам"
     send_mail(subject, content, addresses, self.from_address)
     # Email addresses are parsed from the FormPage's addresses field
     addresses = [x.strip() for x in self.to_address.split(',')]
     subject = self.subject
     content = "Новая подписка на email с сайта ecolabomsk.ru"
     send_mail(subject, content, addresses, self.from_address)
Esempio n. 12
0
    def send_share_email(self):
        """
        Emails the user with the review link
        """
        email_address = self.external_user.email
        review_token = Token(self.external_user.get_reviewer(), self.page.get_latest_revision())

        email_body = render_to_string('wagtail_review/email/share.txt', {
            'page': self.page,
            'review_url': get_review_url(review_token),
        })

        send_mail("A page has been shared with you", email_body, [email_address])
Esempio n. 13
0
    def process_form_submission(self, form):
        form_submission = self.get_submission_class().objects.create(
            form_data=json.dumps(form.cleaned_data, cls=DjangoJSONEncoder),
            page=self, user=form.user
        )

        if self.to_address:
            addresses = [x.strip() for x in self.to_address.split(',')]
            content = '\n'.join([x[1].label + ': ' + str(form.data.get(x[0])) for x in form.fields.items()])
            send_mail(self.subject, content, addresses, self.from_address,)

        # process_form_submission should now return the created form_submission
        return form_submission
Esempio n. 14
0
    def send_mail(self, form):
        """Overrides default send_mail function in wagtail. 
        Added submission date and url to where form was submitted."""
        addresses = [x.strip() for x in self.to_address.split(',')]
        content = []
        for field in form:
            value = field.value()
            if isinstance(value, list):
                value = ', '.join(value)
            content.append('{}: {}'.format(field.label, value))

        submitted_date_str = date.today().strftime('%x')
        content.append('{}: {}'.format('Submitted', submitted_date_str))
        content = '\n'.join(content) + "\n"
        subject = self.subject + " - " + submitted_date_str
        send_mail(subject, content, addresses, self.from_address)
Esempio n. 15
0
    def send_emails(self, template_set, context, recipients, **kwargs):

        connection = get_connection()
        sent_count = 0

        try:
            with OpenedConnection(connection) as open_connection:

                # Send emails
                for recipient in recipients:
                    try:

                        # update context with this recipient
                        context["user"] = recipient.internal
                        context["reviewer"] = recipient
                        context["review_url"] = get_review_url(Token(recipient, context["revision"]))

                        # Translate text to the recipient language settings
                        if recipient.internal:
                            with override(recipient.internal.wagtail_userprofile.get_preferred_language()):
                                # Get email subject and content
                                email_subject = render_to_string(template_set['subject'], context).strip()
                                email_content = render_to_string(template_set['text'], context).strip()
                        else:
                            email_subject = render_to_string(template_set['subject'], context).strip()
                            email_content = render_to_string(template_set['text'], context).strip()

                        kwargs = {}
                        if getattr(settings, 'WAGTAILADMIN_NOTIFICATION_USE_HTML', False):
                            kwargs['html_message'] = render_to_string(template_set['html'], context)

                        # Send email
                        send_mail(email_subject, email_content, [recipient.get_email()], connection=open_connection, **kwargs)
                        sent_count += 1
                    except Exception:
                        logger.exception(
                            "Failed to send notification email '%s' to %s",
                            email_subject, recipient.email
                        )
        except (TimeoutError, ConnectionError):
            logger.exception("Mail connection error, notification sending skipped")

        return sent_count == len(recipients)
Esempio n. 16
0
    def send_request_emails(self):
        # send request emails to all reviewers except the reviewer record for the user submitting the request
        for reviewer in self.assignees.all():
            email = reviewer.get_email()

            context = {
                'email': email,
                'user': reviewer.internal,
                'reviewer': reviewer,
                'review_request': self,
                'page': self.page_revision.as_page_object(),
                'submitter': self.submitted_by,
                'review_url': self.get_review_url(reviewer),
            }

            email_subject = render_to_string('wagtail_review/email/request_review_subject.txt', context).strip()
            email_content = render_to_string('wagtail_review/email/request_review.txt', context).strip()

            send_mail(email_subject, email_content, [email])
Esempio n. 17
0
    def send_mail(self, form):
        addresses = [x.strip() for x in self.to_address.split(',')]

        emailheader = "New registration via Pharmaziegasse Website"

        content = []
        for field in form:
            value = field.value()
            if isinstance(value, list):
                value = ', '.join(value)
            content.append('{}: {}'.format(field.label, value))
        content = '\n'.join(content)
        
        content += '\n\nMade with ❤ by a tiny SNEK'

        #emailfooter = '<style>@keyframes pulse { 10% { color: red; } }</style><p>Made with <span style="width: 20px; height: 1em; color:#dd0000; animation: pulse 1s infinite;">&#x2764;</span> by <a style="color: lightgrey" href="https://www.aichner-christian.com" target="_blank">Werbeagentur Christian Aichner</a></p>'
        
        #html_message = f"{emailheader}\n\n{content}\n\n{emailfooter}"
        
        send_mail(self.subject, f"{emailheader}\n\n{content}", addresses, self.from_address)
Esempio n. 18
0
 def handle(self, value):
     form = self.context['form']
     form_name = form.name
     subject = _(f'Odpověď na formulář "{form_name}"')
     sender_field_name = value['sender']
     validated_data = self.context['validated_data']
     sender = validated_data.get(sender_field_name, None)
     if sender is None and self.context['request'].user.is_authenticated:
         sender = self.context['request'].user.email
     context = {
         'user': self.context['request'].user,
         'data': validated_data,
         'context': {}
     }
     msg_html = render_to_string('send_email_action.html', context)
     send_mail(subject=subject,
               message=str(validated_data),
               from_email=sender,
               recipient_list=[value['address']],
               html_message=msg_html)
Esempio n. 19
0
    def send_mail(self, form):

        addresses = []
        addresses.append(self.to_address)
        submitted_date_str = date.today().strftime('%x')
        subject = 'Contact Request - ' + submitted_date_str
        content = ['Submission content below -\n', ]

        for field in form:
            # add the value of each field as a new line
            value = field.value()
            if isinstance(value, list):
                value = ', '.join(value)
            content.append('{}: {}'.format(field.label, value))

        # Content is joined with a new line to separate each text line
        content = '\n'.join(content)

        # wagtail.wagtailadmin.utils - send_mail function is called
        # This function extends the Django default send_mail function
        send_mail(subject, content, addresses, self.from_address)
Esempio n. 20
0
    def process_form_submission(self, form):
        form_submission = self.get_submission_class().objects.create(
            form_data=form.cleaned_data,
            page=self,
            user=form.user,
        )

        if self.to_address:
            addresses = [x.strip() for x in self.to_address.split(",")]
            content = "\n".join([
                x[1].label + ": " + str(form.data.get(x[0]))
                for x in form.fields.items()
            ])
            send_mail(
                self.subject,
                content,
                addresses,
                self.from_address,
            )

        # process_form_submission should now return the created form_submission
        return form_submission
Esempio n. 21
0
    def send_mail(self, form):
        addresses = [x.strip() for x in self.to_address.split(',')]
        context = {
            'subject': self.subject,
            'title': self.title,
            'render_data': []
        }
        for field in form:
            value = field.value()
            if isinstance(value, list):
                value = ', '.join(value)
            context['render_data'].append({
                'title': field.label,
                'data': value
            })

        html_message = render_to_string('form_email.html', context)
        plain_message = strip_tags(html_message)
        send_mail(self.subject,
                  plain_message,
                  addresses,
                  self.from_address,
                  html_message=html_message,
                  fail_silently=False)