利用python的smtp发送邮件后没收到邮件也没提示报错

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import smtplib
from email.mime.text import MIMEText
msg = MIMEText('hello,send by Python...','plain','utf-8')


from_addr = input('From: ')   #输入Email地址和命令:
password = input('Password: ')
to_addr = input('To: ')    #输入收件人地址
smtp_server = input('SMTP server: ')   #输入SMTP服务器地址:

try:
    server = smtplib.SMTP(smtp_server,465)  # SMTP协议默认端口是25
    server.set_debuglevel(1)
    server.login(from_addr,password)
    server.sendmail(from_addr,[to_addr],msg.as_string())
    print ("邮件发送成功")
    server.quit()
except smtplib.SMTPException:
    print("Error: 无法发送邮件")

clipboard.png
这是结果,都输入完之后什么也不提示,求指导!谢谢!

阅读 14.5k
5 个回答

两个要点:

  • 使用 smtplib.SMTP_SSL,qq 邮箱需要安全连接

  • 不能直接使用 qq 邮箱密码登录,要申请授权码,详见:http://service.mail.qq.com/cg...

新手上路,请多包涵

看看垃圾箱里有没有,我用网易邮箱发给qq的,结果被扔到垃圾箱了。

你可以先把from、to这些参数都直接写死,测试下sendmail的结果,另外你自己调试下啊,看执行到哪句?

邮件发不发又不是你说了算,是你填的 SMTP Server 说了算。(准确说,你填的这个 SMTP Server 叫发信服务器)
整个过程没有报错,不代表 SMTP Server 把你的邮件发出去了啊,再进一步,即使你邮件发出去了,也不代表在收信端没有被干掉。

“真正的发信”,是直接连“收信 SMTP 服务器”,然后完成会话,信就投送完了。是的,这里有很多安全问题,最简单的 SMTP 服务器会通过 SPF 验证你的 IP 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题