Esempio n. 1
0
def mail(email, folder):
    if email and folder:
        email = urllib.unquote(email)
        folder = urllib.unquote(folder)

    page_info = {}
    page_info['mailboxes'] = ImapAccount.query.filter_by(
        user_id=current_user.id).all()

    mail_directories = {}

    for mailbox in page_info['mailboxes']:
        t = TreeNode()
        for d in listdir(config.HIPFLASK_FOLDERS['maildirs'] + '/' +
                         mailbox.email):
            t.add_child(d)

        mail_directories[mailbox.email] = t

    page_info['r'] = mail_directories

    page_info['emails'] = []

    breadcrumbs = []
    if (email and folder) and (email in [
            x.email for x in page_info['mailboxes']
    ]) and (os.path.isdir(config.HIPFLASK_FOLDERS['maildirs'] + '/' + email +
                          '/' + folder)):
        num_requested = 30  #int(request.args['iDisplayLength'])

        # TODO: sanity check on this value! what if it is greater than total?
        starting_record = int(request.args.get('start', 0))

        md = MaildirUtils(email)
        total_records, page_info['emails'] = md.get_messages(
            email, folder, starting_record, num_requested)

        #filtered_records = total_records # 30

        #page_info['emails'] = msgs
        #page_info['emails'].append({'from': 'jay', 'subject': 'mysubj', 'date': 'today'})

        breadcrumbs.append(email)
        breadcrumbs.extend(folder.split('.'))

    return render_template('email.html',
                           breadcrumbs=breadcrumbs,
                           current_email=email,
                           current_folder=folder,
                           **page_info)
Esempio n. 2
0
def mail(email, folder):
    if email and folder:
        email = urllib.unquote(email)
        folder = urllib.unquote(folder)

    page_info = {}
    page_info["mailboxes"] = ImapAccount.query.filter_by(user_id=current_user.id).all()

    mail_directories = {}

    for mailbox in page_info["mailboxes"]:
        t = TreeNode()
        for d in listdir(config.HIPFLASK_FOLDERS["maildirs"] + "/" + mailbox.email):
            t.add_child(d)

        mail_directories[mailbox.email] = t

    page_info["r"] = mail_directories

    page_info["emails"] = []

    breadcrumbs = []
    if (
        (email and folder)
        and (email in [x.email for x in page_info["mailboxes"]])
        and (os.path.isdir(config.HIPFLASK_FOLDERS["maildirs"] + "/" + email + "/" + folder))
    ):
        num_requested = 30  # int(request.args['iDisplayLength'])

        # TODO: sanity check on this value! what if it is greater than total?
        starting_record = int(request.args.get("start", 0))

        md = MaildirUtils(email)
        total_records, page_info["emails"] = md.get_messages(email, folder, starting_record, num_requested)

        # filtered_records = total_records # 30

        # page_info['emails'] = msgs
        # page_info['emails'].append({'from': 'jay', 'subject': 'mysubj', 'date': 'today'})

        breadcrumbs.append(email)
        breadcrumbs.extend(folder.split("."))

    return render_template(
        "email.html", breadcrumbs=breadcrumbs, current_email=email, current_folder=folder, **page_info
    )
Esempio n. 3
0
def mail_message(email, folder):
    email = urllib.unquote(email)
    folder = urllib.unquote(folder)
    mailboxes = ImapAccount.query.filter_by(user_id=current_user.id,
                                            email=email).first()

    if not request.args.get('message'):
        return 'Please select a message'

    # TODO: return 'empty' messages rather than {}
    if not mailboxes:
        return 'Please select a message'  # actually return 404

    messagepath = config.HIPFLASK_FOLDERS[
        'maildirs'] + '/' + email + '/' + folder
    if not os.path.isdir(messagepath):
        return 'Please select a message'  # actually return 404

    msg_path = base64.b64decode(request.args.get('message'))

    breadcrumbs = []
    breadcrumbs.append(email)
    breadcrumbs.extend(folder.split('.'))
    mailboxes = ImapAccount.query.filter_by(user_id=current_user.id).all()

    mail_directories = {}

    for mailbox in mailboxes:
        t = TreeNode()
        for d in listdir(config.HIPFLASK_FOLDERS['maildirs'] + '/' +
                         mailbox.email):
            t.add_child(d)

        mail_directories[mailbox.email] = t

    r = mail_directories

    md = MaildirUtils(email)
    msg = md.get_message(msg_path).decode('utf-8')
    return render_template('message.html',
                           message=msg,
                           breadcrumbs=breadcrumbs,
                           current_email=email,
                           current_folder=folder,
                           mailboxes=mailboxes,
                           r=r)
Esempio n. 4
0
def mail_message(email, folder):
    email = urllib.unquote(email)
    folder = urllib.unquote(folder)
    mailboxes = ImapAccount.query.filter_by(user_id=current_user.id, email=email).first()

    if not request.args.get("message"):
        return "Please select a message"

    # TODO: return 'empty' messages rather than {}
    if not mailboxes:
        return "Please select a message"  # actually return 404

    messagepath = config.HIPFLASK_FOLDERS["maildirs"] + "/" + email + "/" + folder
    if not os.path.isdir(messagepath):
        return "Please select a message"  # actually return 404

    msg_path = base64.b64decode(request.args.get("message"))

    breadcrumbs = []
    breadcrumbs.append(email)
    breadcrumbs.extend(folder.split("."))
    mailboxes = ImapAccount.query.filter_by(user_id=current_user.id).all()

    mail_directories = {}

    for mailbox in mailboxes:
        t = TreeNode()
        for d in listdir(config.HIPFLASK_FOLDERS["maildirs"] + "/" + mailbox.email):
            t.add_child(d)

        mail_directories[mailbox.email] = t

    r = mail_directories

    md = MaildirUtils(email)
    msg = md.get_message(msg_path).decode("utf-8")
    return render_template(
        "message.html",
        message=msg,
        breadcrumbs=breadcrumbs,
        current_email=email,
        current_folder=folder,
        mailboxes=mailboxes,
        r=r,
    )
Esempio n. 5
0
def mail_json(email, folder):
    email = urllib.unquote(email)
    folder = urllib.unquote(folder)
    mailboxes = ImapAccount.query.filter_by(user_id=current_user.id,
                                            email=email).first()

    # TODO: return 'empty' messages rather than {}

    if not mailboxes:
        return '{}'  # actually return 404

    messagepath = config.HIPFLASK_FOLDERS[
        'maildirs'] + '/' + email + '/' + folder
    if not os.path.isdir(messagepath):
        return '{}'  # actually return 404

    num_requested = int(request.args['iDisplayLength'])

    # TODO: sanity check on this value! what if it is greater than total?
    starting_record = int(request.args['iDisplayStart'])

    md = MaildirUtils(email)
    total_records, msgs = md.get_messages(email, folder, starting_record,
                                          num_requested)

    filtered_records = total_records  # 30

    messages = []
    for m in msgs:
        msg = [
            m.get('from', ''),
            m.get('subject', ''),
            # m.get('summary', ''),
            m.get('date', ''),
            m.get('path', ''),
        ]
        messages.append([cgi.escape(m) for m in msg])

    return jsonify(
        dict(
            aaData=messages,
            iTotalRecords=total_records,
            iTotalDisplayRecords=filtered_records,
            sEcho=int(request.args['sEcho']),
        ))
Esempio n. 6
0
def mail_json(email, folder):
    email = urllib.unquote(email)
    folder = urllib.unquote(folder)
    mailboxes = ImapAccount.query.filter_by(user_id=current_user.id, email=email).first()

    # TODO: return 'empty' messages rather than {}

    if not mailboxes:
        return "{}"  # actually return 404

    messagepath = config.HIPFLASK_FOLDERS["maildirs"] + "/" + email + "/" + folder
    if not os.path.isdir(messagepath):
        return "{}"  # actually return 404

    num_requested = int(request.args["iDisplayLength"])

    # TODO: sanity check on this value! what if it is greater than total?
    starting_record = int(request.args["iDisplayStart"])

    md = MaildirUtils(email)
    total_records, msgs = md.get_messages(email, folder, starting_record, num_requested)

    filtered_records = total_records  # 30

    messages = []
    for m in msgs:
        msg = [
            m.get("from", ""),
            m.get("subject", ""),
            # m.get('summary', ''),
            m.get("date", ""),
            m.get("path", ""),
        ]
        messages.append([cgi.escape(m) for m in msg])

    return jsonify(
        dict(
            aaData=messages,
            iTotalRecords=total_records,
            iTotalDisplayRecords=filtered_records,
            sEcho=int(request.args["sEcho"]),
        )
    )