Exemple #1
0
    def send(self):
        if self.sent:
            raise Exception(
                'This mail has been sent already. It cannot be sent again.')

        from byro.mails.send import mail_send_task
        mail_send_task(
            to=self.to.split(','),
            subject=self.subject,
            body=self.text,
            sender=self.reply_to,
            cc=(self.cc or '').split(','),
            bcc=(self.bcc or '').split(','),
            attachments=self.attachment_ids,
        )

        self.sent = now()
        self.save(update_fields=['sent'])
Exemple #2
0
    def send(self):
        if self.sent:
            raise Exception(
                'This mail has been sent already. It cannot be sent again.')

        from byro.mails.send import mail_send_task
        mail_send_task(
            to=self.to.split(','),
            subject=self.subject,
            body=self.text,
            sender=self.reply_to,
            cc=(self.cc or '').split(','),
            bcc=(self.bcc or '').split(','),
            attachments=list(self.attachments.all().values_list('pk',
                                                                flat=True)),
        )

        self.sent = now()
        self.save()
Exemple #3
0
    def send(self):
        if self.sent:
            raise Exception(
                "This mail has been sent already. It cannot be sent again.")

        self.process_special_to()

        from byro.common.models import Configuration

        config = Configuration.get_solo()

        if self.to == "special:all" or not self.to.startswith("special:"):
            send_tos = []

            if self.to == "special:all":
                for member in (Member.objects.filter(
                        Q(memberships__start__lte=now().date())
                        & (Q(memberships__end__isnull=True)
                           | Q(memberships__end__gte=now().date()))).filter(
                               email__isnull=False).exclude(email="").all()):
                    send_tos.append(member)
                    self.members.add(member)

            else:
                to_addrs = self.to.split(",")
                for addr in to_addrs:
                    member = Member.all_objects.filter(
                        email__iexact=addr.lower()).first()
                    if member:
                        send_tos.append(member)
                        self.members.add(member)
                    else:
                        send_tos.append(addr)

            headers = {}
            if self.reply_to:
                headers["Reply-To"] = self.reply_to

            from byro.mails.send import mail_send_task

            for addr in send_tos:
                body = self.text
                if isinstance(addr, Member):
                    signature = _(
                        "You are receiving this email due to your membership in {name}."
                    ).format(name=config.name)
                    signature += "\n"
                    signature += _(
                        "You can see your member page at this URL: {url}"
                    ).format(url=addr.profile_memberpage.get_url())
                    body += "\n\n-- \n" + signature
                    addr = addr.email
                mail_send_task(
                    to=[addr],
                    subject=self.subject,
                    body=body,
                    sender=config.mail_from,
                    cc=(self.cc or "").split(","),
                    bcc=(self.bcc or "").split(","),
                    attachments=self.attachment_ids,
                    headers=headers,
                )

        self.sent = now()
        self.save(update_fields=["sent"])