示例#1
0
def get_email(user):
    server = IMAPClient(HOST, use_uid=True, ssl=True)
    username = db.get("user:%s:login" % user)
    password = db.get("user:%s:password" % user)
    server.login(username, password)
    server.select_folder('INBOX', readonly=True)
    messages = server.search(['NOT DELETED','SINCE 15-May-2014'])
    response = server.fetch(messages, ['RFC822', 'FLAGS'])
    for msgid, data in response.iteritems():
        # check for duplicates
        duplicate = db.zrangebyscore("mail:%s:inbox" % user, msgid, msgid)
        if duplicate:
            continue
        emailUTF8 = data['RFC822'].encode('utf-8')
        msg = parser.parsestr(emailUTF8)
        body = extract_body(msg).encode('utf-8')
        msg['message'] = body
        msg['subject'] = ('NoSubj' if (msg['Subject'] == None or msg['Subject'].encode('utf-8') == "".encode('utf-8'))  else msg['Subject'])
        msg['to'] = ('NoTo' if (msg['To'] == None) else msg['To'])
        plain = {'plain_body': extract_body_text(msg).encode('utf-8'), 'subject': msg['subject']}
        # TODO set unread
        email = {'id': msgid, 'from': msg['From'], 'to': msg['To'], 'subject': msg['Subject'],
                'date': msg['Date'], 'cc': msg['CC'], 'read': False,
                'message': body, 'categorized': False, 'summary': shorten(plain), 'archived': False}

        trained = db.get("user:%s:trained" % user)
        if trained == "true":
            email['category'] = int(classify(msg, user))
        else:
            email['category'] = 1
        emailJSON = json.dumps(email, sort_keys=True, indent=4, separators=(',', ': '))
        db.zadd("mail:%s:inbox" % user, emailJSON, msgid)
        db.sadd("mail:%s:%s" % (user, email['category']), msgid)
    server.logout()
示例#2
0
def signup():
    if current_user is not None and current_user.is_authenticated():
        return redirect(url_for("index"))
    form = LoginForm()
    if form.validate_on_submit():
        user = User(username=form.email.data, password=form.password.data)
        if user.is_valid_login():
            login_user(user)
            return redirect(url_for("index"))
        elif form.new_account.data:
            login_user(user)
            # add login, add password
            db.getset("user:%s:login" % user.user, user.username)
            db.getset("user:%s:password" % user.user, user.password)
            # add to email list
            db.sadd("user:users", user.user)
            # add "untrained" to models
            db.getset("user:%s:trained" % user.user, "false")
            # add category
            category = [{"id": 1, "emails": 3, "split": 0, "name": "inbox", "class": "category-inbox"}]
            categoryJSON = json.dumps(category, sort_keys=True, indent=4, separators=(",", ": "))
            db.getset("user:%s:categories" % user.user, categoryJSON)
            return redirect(url_for("index"))
    return render_template("signup.html", form=form, title="Sign In")