def enqueue(ctx, run): ''' check queuable Mail, and enqueue them if `--run` is specified ''' mails = Mail.objects.queueing_set() for m in mails: if run: m.enqueue() echo("{{m.id}}: {{m.subject}}:task {{m.task_id}}", m=m)
def verify_address(ctx, id, address): '''Verifies an email address. This action causes a confirmation email message to be sent to the specified address. (boto.ses.verify_email_address) ''' source = models.Source.objects.get(id=id) echo(json.dumps(source.verify_address(address)))
def prepare_sending(ctx, id): '''Send a Mail specified by id ''' mail = Mail.objects.filter(id=id).first() if not mail: echo('No Mail for id={{ id }}', id=id) return if mail.status == 'sending': echo('This mail is being processed.') return mail.instance.prepare_sending()
def set_status(ctx, id, status): '''force change status''' status = status.lower() mail = Mail.objects.filter(id=id).first() if not mail: echo(u"No mail for {{ id }}", id=id) return mail.status = status mail.sent_at = timezone.now() if status == Mail.STATUS_SENT else None mail.save()
def recipients(ctx, id, address): mail = Mail.objects.filter(id=id).first() if not mail: echo(u"No mail for {{ id }}", id=id) return qs = address and mail.recipients.filter(to__address__in=address) \ or mail.recipients.filter() echo(serializers.serialize('json', qs))
def ls_mails(ctx, queueing, id): ''' list all Mail''' mails = queueing and Mail.objects.queueing_set() or Mail.objects.all() if id: mails = mails.filter(id__in=id) for mail in mails: echo(u"{{ mail.id }}\t\ {{ opt.app_label }}.{{ opt.object_name }}\t\ {{ mail.get_status_display }}\t\ {{ mail.subject }}\t\ to={{ mail.recipients.count}}\t\ active={{ mail.active_recipients.count}}\t\ task={{ mail.task_id }}\t\ {{ mail.due_at|default:'' }}", # NOQA mail=mail, opt=mail.instance._meta)
def senders(ctx, limit, **kwargs): q = dict((k, v) for k, v in kwargs.items() if v) instances = models.SmtpSender.objects.filter(**q)[:limit] echo(serializers.serialize('json', instances))
def process_drop(ctx): from flier.smtp.tasks import process_drop echo(u"{{ msg }}", msg=process_drop())
def process_drop_mail(ctx, path): from flier.smtp.tasks import process_drop_mail echo(u"{{ msg }}", msg=process_drop_mail(path))
def validate_email(ctx, addrs): for a in addrs: echo(u"{{check.0}} : {{check.1}}", check=validators.validate_email.check(a))
def recipients(ctx, limit, **kwargs): q = dict((k, v) for k, v in kwargs.items() if v) instances = models.Recipient.objects.filter(**q)[:limit] echo(serializers.serialize('json', instances))
def service_addresses(ctx, id): '''Fetch a list of the email addresses that have been verified (boto.ses.list_verified_email_addresses) ''' service = models.Service.objects.get(id=id) echo(json.dumps(service.list_verified_email_addresses()))