def draft_send_api(): data = request.get_json(force=True) draft_public_id = data.get('draft_id') if draft_public_id is not None: draft = get_draft(draft_public_id, data.get('version'), g.namespace.id, g.db_session) if not any((draft.to_addr, draft.cc_addr, draft.bcc_addr)): raise InputError('No recipients specified') validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=True) else: to = get_recipients(data.get('to'), 'to', validate_emails=True) cc = get_recipients(data.get('cc'), 'cc', validate_emails=True) bcc = get_recipients(data.get('bcc'), 'bcc', validate_emails=True) if not any((to, cc, bcc)): raise InputError('No recipients specified') subject = data.get('subject') body = data.get('body') tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('thread_id'), g.namespace.id, g.db_session) draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=False) return resp
def draft_send_api(): data = request.get_json(force=True) draft_public_id = data.get('draft_id') if draft_public_id is not None: draft = get_draft(draft_public_id, data.get('version'), g.namespace.id, g.db_session) validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=True) else: draft = create_draft(data, g.namespace, g.db_session, syncback=False) validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=False) if resp.status_code == 200: # At this point, the message has been successfully sent. If there's # any sort of error in committing the updated state, don't allow it # to cause the request to fail. Otherwise a client may think their # message hasn't been sent, when it fact it has. try: g.db_session.add(draft) g.db_session.commit() except Exception as exc: g.log.critical('Error committing draft after successful send', exc_info=True, error=exc) return resp
def draft_send_api(): if request.content_type == "message/rfc822": msg = create_draft_from_mime(g.namespace.account, request.data, g.db_session) validate_draft_recipients(msg) resp = send_raw_mime(g.namespace.account, g.db_session, msg) return resp data = request.get_json(force=True) draft_public_id = data.get('draft_id') if draft_public_id is not None: draft = get_draft(draft_public_id, data.get('version'), g.namespace.id, g.db_session) schedule_action('delete_draft', draft, draft.namespace.id, g.db_session, inbox_uid=draft.inbox_uid, message_id_header=draft.message_id_header) else: draft = create_draft(data, g.namespace, g.db_session, syncback=False) validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session) return resp
def draft_send_api(): data = request.get_json(force=True) draft_public_id = data.get('draft_id') if draft_public_id is not None: draft = get_draft(draft_public_id, data.get('version'), g.namespace.id, g.db_session) if not any((draft.to_addr, draft.cc_addr, draft.bcc_addr)): raise InputError('No recipients specified') validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=True) else: to = get_recipients(data.get('to'), 'to', validate_emails=True) cc = get_recipients(data.get('cc'), 'cc', validate_emails=True) bcc = get_recipients(data.get('bcc'), 'bcc', validate_emails=True) if not any((to, cc, bcc)): raise InputError('No recipients specified') subject = data.get('subject') body = data.get('body') tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('thread_id'), g.namespace.id, g.db_session) draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=False) return resp
def draft_send_api(): if request.content_type == "message/rfc822": msg = create_draft_from_mime(g.namespace.account, request.data, g.db_session) validate_draft_recipients(msg) resp = send_raw_mime(g.namespace.account, g.db_session, msg) return resp data = request.get_json(force=True) draft_public_id = data.get('draft_id') if draft_public_id is not None: draft = get_draft(draft_public_id, data.get('version'), g.namespace.id, g.db_session) schedule_action('delete_draft', draft, draft.namespace.id, g.db_session, inbox_uid=draft.inbox_uid, message_id_header=draft.message_id_header) else: draft = create_draft(data, g.namespace, g.db_session, syncback=False) validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session) return resp