コード例 #1
0
ファイル: forms.py プロジェクト: hullabaloo707/nadine
    def save(self, user):
        mailing_list = MailingList.objects.get(
            pk=self.cleaned_data['mailing_list_id'])
        subject = "Nadine Subscribe/Unsubscribe Form"
        if self.cleaned_data['subscribe'] == 'true' and (
                user.profile.is_active() or user.is_staff):
            mailing_list.subscribe(user)
            subject = '%s subscribed to %s' % (user.get_full_name(),
                                               mailing_list.name)
        elif self.cleaned_data[
                'subscribe'] == 'false' and user in mailing_list.subscribers.all(
                ):
            mailing_list.unsubscribe(user)
            subject = '%s unsubscribed from %s' % (user.get_full_name(),
                                                   mailing_list.name)

        # Send a notification to the team
        mailgun_data = {
            "from": settings.DEFAULT_FROM_EMAIL,
            "to": [
                settings.TEAM_EMAIL_ADDRESS,
            ],
            "subject": subject,
            "text": "So says Nadine!",
        }
        mailgun.mailgun_send(mailgun_data, inject_list_id=False)

        return True
コード例 #2
0
def router(sender, **kwargs):
    """Route an incoming email to the appropriate destination."""

    # Pull our email object and convert it to the mailgun_data we need`
    email = kwargs['instance']
    strip_emails = getattr(settings, "COMLINK_STRIP_EMAILS", False)
    mailgun_data = email.get_mailgun_data(stripped=strip_emails)
    logger.debug("In Router: ")
    logger.debug(mailgun_data)

    # Pull our attachments and convert it to the list of files we need
    attachments = kwargs['attachments']
    files = []
    for a in attachments:
        files.append(('attachment', open(a.file.path, mode='rb')))

    # Build out the BCC depending on who the recipient is
    bcc_list = None
    mailing_list = MailingList.objects.filter(address=email.recipient,
                                              enabled=True).first()
    if mailing_list:
        mailing_list.emailmessage_set.add(email)
        if mailing_list.is_members_only:
            if not mailing_list.is_subscriber(email.from_address):
                mailgun.send_template(
                    'email/non_member.txt', email.recipient,
                    "Rejected Email [%s]" % mailing_list.name)
                raise mailgun.MailgunException(
                    "Members Only Mailing List '%s' received email from non-member '%s'"
                    % (mailing_list.name, email.from_address))
        bcc_list = mailing_list.subscriber_addresses
        mailgun.inject_footer(mailgun_data, mailing_list.unsubscribe_url)
        if mailing_list.subject_prefix and mailing_list.subject_prefix not in mailgun_data[
                "subject"]:
            mailgun_data["subject"] = ' '.join(
                (mailing_list.subject_prefix, mailgun_data["subject"]))
    elif hasattr(settings, "STAFF_EMAIL_ADDRESS"
                 ) and settings.STAFF_EMAIL_ADDRESS in email.recipient:
        bcc_list = list(
            User.objects.filter(is_staff=True,
                                is_active=True).values_list('email',
                                                            flat=True))
        mailgun.inject_footer(mailgun_data, email.public_url)
    elif hasattr(settings, "TEAM_EMAIL_ADDRESS"
                 ) and settings.TEAM_EMAIL_ADDRESS in email.recipient:
        bcc_list = list(
            User.helper.managers(include_future=True).values_list('email',
                                                                  flat=True))
        mailgun.inject_footer(mailgun_data, email.public_url)
    logger.debug("BCC List:")
    logger.debug(bcc_list)

    if bcc_list:
        # Pass this message along
        mailgun_data["bcc"] = bcc_list
        mailgun.mailgun_send(mailgun_data, files)
コード例 #3
0
ファイル: email.py プロジェクト: hullabaloo707/nadine
def send_manage_member(user, subject=None):
    if subject == None:
        subject = "Incomplete Tasks"
    subject = "%s - %s" % (subject, user.get_full_name())
    if hasattr(settings, "EMAIL_SUBJECT_PREFIX"):
        # Adjust the subject if we have a prefix
        subject = settings.EMAIL_SUBJECT_PREFIX.strip() + " " + subject.strip()

    text_content, html_content = get_manage_member_content(user)
    mailgun_data = {
        "from": settings.DEFAULT_FROM_EMAIL,
        "to": [settings.TEAM_EMAIL_ADDRESS, ],
        "subject": subject,
        "text": text_content,
        "html": html_content,
    }
    if hasattr(settings, 'MAILGUN_DOMAIN'):
        return mailgun.mailgun_send(mailgun_data, inject_list_id=False)