Python smtplib.SMTP ('localhost') зависает навсегда - PullRequest
0 голосов
/ 06 мая 2020

У меня есть сервер с установленной службой Postfix SMTP, и я могу отправлять сообщения, используя bash, например:

echo "This is the body of the email" | mail -s "This is the subject line" user@example.com

Но когда я пытаюсь сделать то же самое с Python, он зависает навсегда:

import smtplib
s = smtplib.SMTP('localhost')
s.send_message('')

Скрипт зависает на второй строчке, и непонятно почему. Я проверил конфигурацию iptables (она пуста), и я все еще могу отправлять сообщения с помощью команды bash.

«te lnet localhost 25» также работает нормально, порт открыт.

Файл конфигурации Postfix:

mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = localhost
mynetworks = 127.0.0.0/8
myorigin = /etc/mailname

1 Ответ

0 голосов
/ 07 мая 2020

send_message () ожидает EmailMessage не строку. В настоящее время кажется, что он завис, потому что postfix ждет, когда вы скажете ему что-то сделать, вы можете включить вывод отладки, используя set_debuglevel () .

Вот простой пример, который должен работать:

from email.message import EmailMessage
import smtplib

msg = EmailMessage()
msg["From"] = "user@example.com"                                                    
msg["To"] = "another-user@example.com"
msg["Subject"] = "Test message subject."                                            
msg.set_content("Test message.")                                                    

s = smtplib.SMTP("localhost")
s.set_debuglevel(1)
s.send_message(msg)
s.quit()
...