【发布时间】:2013-11-05 13:42:56
【问题描述】:
我正在尝试使用 python 3.2 SMTPlib.sendmail() 函数 发送消息,经过 SMTP 库的一些修改(即 注释掉抑制错误消息的 rset() 函数) 我设法从服务器检索到以下错误消息:
发送邮件失败 (554, b'Transaction failed : 由于可能被滥用,无法发送消息;请访问http://postmaster.yahoo.com/abuse_smtp.html了解更多信息')
雅虎邮件 SMTP 服务器认为我在发送垃圾邮件,该 URL 确实链接到任何内容 有用。我认为这与标题不足有关,我似乎无法找到明确的 回答什么是合规的标头,我读过 Gmail 的类似问题。 此帖子已替换为模拟电子邮件。
任何帮助将不胜感激
我的完整代码如下:
self.message = email.message_from_string('''To: <ksmith@yahoo.co.nz>
From: <rwilson@yahoo.co.nz>
Reply-To: <rwilson@yahoo.co.nz>
Subject: Test send mail \n\n Hello''')
fromAddress = 'rwilson@yahoo.co.nz'
toAddress = 'ksmith@yahoo.co.nz'
try:
self.smtp = SMTP()
self.smtp.connect('smtp.mail.yahoo.com')
except Exception:
print('Connection Failed')
print(traceback.format_exc())
try:
self.smtp.login('rwilson','tree22')
except Exception:
print('Login Failed!')
print(traceback.format_exc())
try:
self.smtp.sendmail(fromAddress,toAddress ,self.message.as_string())
print("Message sucessfully sent!")
self.smtp.close()
except Exception as e:
print('SendMail Failed')
print(e)
【问题讨论】:
-
我建议使用纯
telnet会话来调试问题:打开到 SMTP 服务器端口 25 的 telnet 连接,并尝试通过手动输入 SMTP 会话来传递邮件。如果这也不起作用,那么您的问题与 Python 的 SMTPlib 没有任何关系,您应该继续尝试找出 SMTP 服务器将您的邮件作为垃圾邮件拒绝的原因。如果它确实有效,则说明您的代码存在问题。使用像tcpdump和/或 Wireshark 这样的数据包嗅探器,并将您的普通 SMTP 会话与由您的 python 代码引起的 SMTP 会话进行比较,以找出差异。 -
我已经放弃尝试使用 yahoo,上面的代码似乎可以使用 smtp.gmail.com
标签: python email smtp python-3.2 yahoo-mail