0

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

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

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'
4

2 回答 2

1

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

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

或者:

print validate_email(item.strip())
于 2013-08-17T05:54:37.217 回答
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')
于 2013-08-17T06:01:35.170 回答