基本上,如果我创建一个字符串数组并使用该方法遍历数组......一切都完美无缺。
然而,如果我从我的数据库中抓取它们....即使我已经检查了类型,甚至将电子邮件打印到控制台......它仍然显示电子邮件验证失败,即使我手动执行它也是如此一个字符串,它工作正常
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'
答案 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')