Отправка писем с помощью sendmail не работает для больших писем - PullRequest
0 голосов
/ 13 июня 2010

Я использую Python sendmail следующим образом:

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

Обычно это работает нормально (т.е. я получаю электронное письмо), но не получается (то есть не отображается исключение, но электронная почта просто нене), когда сообщение довольно большое (около 200 строк).Есть идеи, что может вызвать это?

Ответы [ 4 ]

2 голосов
/ 13 июня 2010

Кому вы отправляете? Вам следует учитывать, что некоторые почтовые серверы (например, Yahoo и Hotmail) помещают на карантин входящую электронную почту на определенный период времени, если электронная почта относится к категории потенциального спама. Спам будет зависеть от содержания, отношения изображения к тексту, характера вложений, характера ссылок html, скорости отправки, количества дубликатов, отправителя и многих других факторов.

1 голос
/ 13 июня 2010

Попробуйте установить debuglevel , чтобы получить информацию о ходе выполнения протокола.

SMTP.set_debuglevel(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.')
{}
0 голосов
/ 25 июня 2010

Я только начал возиться с отправкой электронной почты через SMPT-серверы. Какое программное обеспечение вы используете для создания вашего локального сервера? иногда программное обеспечение может быть настроено так, чтобы отклонять сообщения заданной длины. Проверьте настройки вашего сервера.

0 голосов
/ 13 июня 2010

Вы можете попытаться увидеть, что на самом деле отправляет SMTP, подключив netcat к порту и отправив туда: nc -l 5678, затем в Python smtplib.SMTP('localhost', 5678).

Если это выглядит правильно (и не должно быть никаких причин, по которым это не так), вы можете попробовать указать telnet localhost smtp, чтобы увидеть ответ напрямую. Это должно дать вам некоторое представление о том, что идет не так.

...