使用smtplib和smtpmail处理错误

2024-09-28 19:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过程序检查电子邮件。我用的是这个代码:

    resolver = dns.resolver.Resolver()
    resolver.timeout = 3
    resolver.lifetime = 3
    mx_records = resolver.query(domain, 'MX')
    for mxRecord in mx_records:
        mxRecord = str(mxRecord.exchange)
        host = socket.gethostname()
        server = smtplib.SMTP(timeout=30)
        server.set_debuglevel(0)
        addressToVerify = var0
        server.connect(mxRecord)
        server.helo(host)
        server.mail('me@domain.com')
        code, message = server.rcpt(str(addressToVerify))
        server.quit()
        res_email = 'Not Found'
        if code == 250:
            result = 'Success'
        else:
            print "doesn't exist"

运行此代码时收到错误:

^{pr2}$

我试图更改超时值,但没用。然后我试图在smtplib.SMTP()中指定端口,但是指定了587,这也没有解决问题。在

我怎样才能解决这个问题?在


Tags: 代码程序hostserverdomaintimeoutcodesmtp
1条回答
网友
1楼 · 发布于 2024-09-28 19:28:28

您可以从Python帮助文件复制代码来询问POP3服务器。在这里,它是以任何轻微的修改形式。在

import poplib, getpass

pop = poplib.POP3('***********', port=110)
pop.user('**********')
pop.pass_('*********')
print (pop.stat())
print (pop.list()[1])

您只需从邮件客户端复制各种常量,例如端口号。在

根据邮件客户端中的设置,此脚本作为输出生成的内容可能会让您感到意外。这就是我要的。在

(431104784) 非‘17‘17‘17‘17’‘17‘17‘17‘17‘17’‘17‘17‘17‘17‘17’‘17‘17‘17‘17‘17’‘17‘17‘17‘17‘17‘17’‘17‘17‘17‘17‘17‘17’‘17‘17‘17’‘17‘17‘17’‘17‘17‘17’‘17‘17‘17’‘17‘17’‘17‘17‘17’‘17‘17‘17’‘17‘17‘17‘17‘17’‘17‘17‘17’‘17‘17‘17’‘17‘17‘17‘17‘17‘17‘17’‘17‘17‘17‘17‘17’‘17‘17‘17’‘17‘17‘17‘17‘17‘17‘17’‘17‘17‘17‘17‘17‘17公元前2248年11月26日,b'28 10982',b'29 14311',b'30 7477',b'31 3852',b'32 8497',b'33 4086',b'34 7240',b'35 69458',b'36 19430',b'37 110263',b'38 2434',b'39 12043',b'40 5306',b'41 10288',b'42 17164',b'43 74974']

但是我知道服务器上没有我在邮件客户机中没有收到的邮件。这个小谜题的答案是,我的电子邮件客户端会在服务器上保留两周的邮件,或者在我删除它们之前,默认情况下,这可能是为了防止在发生某种计算机故障时丢失邮件。在

这意味着仅仅使用上面的输出作为新消息的检查是不够的。有必要将收到的邮件的邮件头中的日期记录到两周内,以便与服务器上的日期进行比较。在

相关问题 更多 >