Python Validate_Email从MongoDB中提取时不起作用

时间:2013-08-17 05:39:46

标签: python mongodb python-2.7

基本上,如果我创建一个字符串数组并使用该方法遍历数组......一切都完美无缺。

然而,如果我从我的数据库中抓取它们....即使我已经检查了类型,甚至将电子邮件打印到控制台......它仍然显示电子邮件验证失败,即使我手动执行它也是如此一个字符串,它工作正常

import pymongo
import validate_email
import unicodedata
from pymongo import MongoClient
from validate_email import validate_email
# Mongo Info
client = MongoClient('localhost', 27017)
db = client.EmailList
emails = db.Emails

emailsToVerify = ['harry@mail.com', 'buzzard@gmail.com', 'frank@Einstein.com']

def verifyEmail(emailToVerify):
    for item in emailToVerify:
        print validate_email(item)

def grabTenEmails():
    i = 0

    for email in emails.find():
        if i < 3:
            i += 1
            # encode('utf8')
            uEmail =  str(email['email'])
            print(uEmail + ' has type ' + str(type(uEmail)))
            emailsToVerify.append(uEmail)

# collection.remove({"email": uEmail})
print('Grabbing ten emails...')
grabTenEmails()
verifyEmail(emailsToVerify)

有代码。不确定是什么。我已经搞砸了一下......所以如果看起来我做的是迟钝的东西,那是因为我尝试过很多东西。

print('rep : ' + uEmail.__repr__())

的输出
rep : 'aRealEmail@yahoo.com\r'

2 个答案:

答案 0 :(得分:1)

您在电子邮件字符串的末尾有一个换行符(\r)。用以下内容来填写:

uEmail =  str(email['email']).strip()

或:

print validate_email(item.strip())

答案 1 :(得分:1)

似乎validate_email无法正常工作,只需检查确切的地址部分;您可能希望首先使用stdlib函数email.utils.parseaddr(address)

清理邮件
>>> import email.utils
>>> email.utils.parseaddr('aRealEmail@yahoo.com\r')
('', 'aRealEmail@yahoo.com')
>>> email.utils.parseaddr('Bill Gates <billyboy@hotmail.com>')
('Bill Gates', 'billyboy@hotmail.com')