Я немного запутался в том, как работает subprocess.Popen
. Если у кого-то есть пример кода, который отправляет электронную почту с использованием модуля подпроцесса и sendmail, это было бы здорово.
у кого-нибудь есть пример кода Python, который отправляет почту с помощью sendmail и подпроцесса?
Ответы (2)
Это не дает прямого ответа на вопрос, но, учитывая ваш ответ на комментарий «DNS», это может решить вашу проблему.
При отправке SMTP-почты вы должны понимать, что адреса "от" и "куда", которые вы передаете процедуре smtplib.sendmail() в качестве аргументов, не совпадают с тем, что вы видите в From: и To: заголовки в сообщении при его получении. Эти аргументы становятся параметрами, передаваемыми принимающей почтовой программе SMTP с помощью команд «MAIL FROM» и «RCPT TO». Это обычно называют «конвертом» почты, и значения обычно отображаются в строках заголовка Received:.
Чтобы указать нужные заголовки, вы должны предоставить их самостоятельно перед телом сообщения. пример smtplib показывает, как это делается, в данном случае с кортежем называемые «msg», которые они добавляют перед телом сообщения.
Одной из первых проблем, с которыми я столкнулся при использовании subprocess
, был тот факт, что по умолчанию он не принимает полные строковые команды оболочки.
Если вы хотите сделать эквивалент команды оболочки, например:
os.system("echo hello world")
вам нужно использовать опцию shell=True
:
subprocess.Popen("echo hello world", shell=True)