使用sendmail发送电子邮件不适用于大型电子邮件

时间:2010-06-13 08:02:27

标签: python email smtp sendmail

我正在以下列方式使用python的sendmail

msg = <SOME MESSAGE>
s = smtplib.SMTP('localhost')
s.sendmail(me, you, msg.as_string())
s.quit()

这通常可以正常工作(即我收到电子邮件)但是当邮件非常大(大约200行)时它失败了(即没有显示异常,但电子邮件没有到达)。有什么想法会导致这种情况吗?

4 个答案:

答案 0 :(得分:2)

你是谁送的?如果电子邮件被归类为潜在垃圾邮件,您应该考虑将一些电子邮件服务器(例如Yahoo和Hotmail)隔离一段时间的传入电子邮件。垃圾邮件将取决于内容,图像与文本的比例,附件的性质,HTML链接的性质,发送速率,重复数量,发件人以及许多其他因素。

答案 1 :(得分:1)

尝试设置debuglevel以获取协议进度的跟踪。

  

SMTP.set_debuglevel(level)

     

设置调试输出级别。 level的真值导致连接的调试消息以及发送到服务器和从服务器接收的所有消息。

当消息成功排队时,调试跟踪的尾部如下所示:

>>> conn = smtplib.SMTP('mail')
>>> conn.set_debuglevel(1)
>>> conn.sendmail('you@example.com','me@example.com','subject: test\n\ntest.\n')
...
send: 'subject: test\r\n\r\ntest.\r\n.\r\n'
reply: '250 2.5.0 Message received and queued.\r\n'
reply: retcode (250); Msg: 2.5.0 Message received and queued.
data: (250, '2.5.0 Message received and queued.')
{}

答案 2 :(得分:0)

您可以通过在端口上挂接netcat然后发送到那里来尝试查看SMTP实际发送的内容:nc -l 5678然后在Python smtplib.SMTP('localhost', 5678)中。

如果看起来正确(并且没有理由不这样做),您可以尝试将其提供给telnet localhost smtp以直接查看回复。这应该可以让你知道出了什么问题。

答案 3 :(得分:0)

我刚刚开始通过SMPT服务器发送电子邮件。您使用什么软件来创建本地主机服务器?有时可以将软件设置为拒绝给定长度的消息。检查您的服务器设置。