首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python smtplib 获取debug信息?

python smtplib 获取debug信息?

提问于 2021-11-22 18:25:05
回答 0关注 0查看 192

想通过PY自动发送邮件,并获取发送成功/失败信息。

不过网上介绍的很多方法都不成功。

下面是尝试过的方法:

方法一:

from_addr = 'sender'

password = 'pass'

to_addr = 'receive_mail '

smtp_server = 'smtp.qq.com'

msg = MIMEText('send by python','plain','utf-8')

msg['From'] = Header(from_addr)

msg['To'] = Header(to_addr)

msg['Subject'] = Header('python test')

try:

server = smtplib.SMTP_SSL(smtp_server)

server.set_debuglevel(1)

smtplib.stderr=open("debug.txt","write") #redirect debug to file

server.connect(smtp_server,465)

server.login(from_addr, password)

server.sendmail(from_addr, to_addr, msg.as_string())

server.quit()

except Exception as e:

方法二:

# Find an available file descriptor

t = tempfile.TemporaryFile()

available_fd = t.fileno()

t.close()

# now make a copy of stderr

os.dup2(2,available_fd)

# Now create a new tempfile and make Python's stderr go to that file

t = tempfile.TemporaryFile()

os.dup2(t.fileno(),2)

from_addr = 'sender'

password = 'pass'

to_addr = 'receive_mail '

smtp_server = 'smtp.qq.com'

msg = MIMEText('send by python','plain','utf-8')

msg['From'] = Header(from_addr)

msg['To'] = Header(to_addr)

msg['Subject'] = Header('python test')

try:

server = smtplib.SMTP_SSL(smtp_server)

server.set_debuglevel(1)

server.connect(smtp_server,465)

server.login(from_addr, password)

server.sendmail(from_addr, to_addr, msg.as_string())

# Grab the stderr from the temp file

sys.stderr.flush()

t.flush()

t.seek(0)

stderr_output = t.read()

t.close()

# Put back stderr

os.dup2(available_fd,2)

os.close(available_fd)

# Finally, demonstrate that we have the output:

print("STDERR:")

count = 0

for line in stderr_output.decode('utf-8').split("\n"):

count += 1

print("{:3} {}".format(count,line))

server.quit()

except Exception as e:

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档