Пример #1
0
def add_message(sender, recipients, body, message):
    sql = """
        INSERT INTO message
            (sender, recipients, subject, source, type, size, created_at)
        VALUES
            (?, ?, ?, ?, ?, ?, datetime('now'))
    """

    all_recipients = {
        'to': [decode_header(recipient) for recipient in recipients],
        'cc':
        split_addresses(decode_header(message['CC']))
        if 'CC' in message else [],
        'bcc':
        split_addresses(decode_header(message['BCC']))
        if 'BCC' in message else []
    }
    cur = _conn.cursor()
    cur.execute(sql, (decode_header(sender), json.dumps(all_recipients),
                      decode_header(message['Subject']), body,
                      message.get_content_type(), len(body)))
    message_id = cur.lastrowid
    # Store parts (why do we do this for non-multipart at all?!)
    parts = 0
    for part in iter_message_parts(message):
        cid = part.get('Content-Id') or str(uuid.uuid4())
        if cid[0] == '<' and cid[-1] == '>':
            cid = cid[1:-1]
        _add_message_part(message_id, cid, part)
        parts += 1
    _conn.commit()
    cur.close()
    log.debug('Stored message {0} (parts={1})'.format(message_id, parts))
    broadcast('add_message', message_id)
    return message_id
Пример #2
0
def delete_message(message_id):
    _conn.execute('DELETE FROM message WHERE id = ?', (message_id, ))
    _conn.execute('DELETE FROM message_part WHERE message_id = ?',
                  (message_id, ))
    _conn.commit()
    log.debug('Deleted message {0}'.format(message_id))
    broadcast('delete_message', message_id)
Пример #3
0
def add_message(sender, recipients, body, message):
    sql = """
        INSERT INTO message
            (sender, recipients, subject, source, type, size, created_at)
        VALUES
            (?, ?, ?, ?, ?, ?, datetime('now'))
    """

    cur = _conn.cursor()
    cur.execute(sql, (sender,
                      json.dumps(recipients),
                      message['Subject'],
                      body,
                      message.get_content_type(),
                      len(body)))
    message_id = cur.lastrowid
    # Store parts (why do we do this for non-multipart at all?!)
    parts = [message] if not message.is_multipart() else message.get_payload()
    for part in parts:
        cid = part.get('Content-Id') or str(uuid.uuid4())
        if cid[0] == '<' and cid[-1] == '>':
            cid = cid[1:-1]
        _add_message_part(message_id, cid, part)
    _conn.commit()
    cur.close()
    log.debug('Stored message {0} (parts={1})'.format(message_id, len(parts)))
    broadcast('add_message', message_id)
    return message_id
Пример #4
0
def add_message(sender, recipients, body, message):
    sql = """
        INSERT INTO message
            (sender, recipients, subject, source, type, size, created_at)
        VALUES
            (?, ?, ?, ?, ?, ?, datetime('now'))
    """

    all_recipients = {'to': map(decode_header, recipients),
                      'cc': split_addresses(decode_header(message['CC'])) if 'CC' in message else [],
                      'bcc': split_addresses(decode_header(message['BCC'])) if 'BCC' in message else []}
    cur = _conn.cursor()
    cur.execute(sql, (decode_header(sender),
                      json.dumps(all_recipients),
                      decode_header(message['Subject']),
                      body,
                      message.get_content_type(),
                      len(body)))
    message_id = cur.lastrowid
    # Store parts (why do we do this for non-multipart at all?!)
    parts = 0
    for part in iter_message_parts(message):
        cid = part.get('Content-Id') or str(uuid.uuid4())
        if cid[0] == '<' and cid[-1] == '>':
            cid = cid[1:-1]
        _add_message_part(message_id, cid, part)
        parts += 1
    _conn.commit()
    cur.close()
    log.debug('Stored message {0} (parts={1})'.format(message_id, parts))
    broadcast('add_message', message_id)
    return message_id
Пример #5
0
def add_message(sender, recipients, body, message):
    sql = """
        INSERT INTO message
            (sender, recipients, subject, source, type, size, created_at)
        VALUES
            (?, ?, ?, ?, ?, ?, datetime('now'))
    """

    cur = _conn.cursor()
    cur.execute(sql, (sender, json.dumps(recipients), message['Subject'], body,
                      message.get_content_type(), len(body)))
    message_id = cur.lastrowid
    # Store parts (why do we do this for non-multipart at all?!)
    parts = [message] if not message.is_multipart() else message.get_payload()
    for part in parts:
        cid = part.get('Content-Id') or str(uuid.uuid4())
        if cid[0] == '<' and cid[-1] == '>':
            cid = cid[1:-1]
        _add_message_part(message_id, cid, part)
    _conn.commit()
    cur.close()
    log.debug('Stored message {0} (parts={1})'.format(message_id, len(parts)))
    broadcast('add_message', message_id)
    return message_id
Пример #6
0
def delete_messages():
    _conn.execute('DELETE FROM message')
    _conn.execute('DELETE FROM message_part')
    _conn.commit()
    log.debug('Deleted all messages')
    broadcast('delete_messages')
Пример #7
0
def delete_messages():
    _conn.execute('DELETE FROM message')
    _conn.execute('DELETE FROM message_part')
    _conn.commit()
    log.debug('Deleted all messages')
    broadcast('delete_messages')
Пример #8
0
def delete_message(message_id):
    _conn.execute('DELETE FROM message WHERE id = ?', (message_id,))
    _conn.execute('DELETE FROM message_part WHERE message_id = ?', (message_id,))
    _conn.commit()
    log.debug('Deleted message {0}'.format(message_id))
    broadcast('delete_message', message_id)