Я использую следующий метод для отправки почты из Python с использованием SMTP. Это правильный метод использования или есть ошибки, которые мне не хватает?
from smtplib import SMTP
import datetime
debuglevel = 0
smtp = SMTP()
smtp.set_debuglevel(debuglevel)
smtp.connect('YOUR.MAIL.SERVER', 26)
smtp.login('USERNAME@DOMAIN', 'PASSWORD')
from_addr = "John Doe <john@doe.net>"
to_addr = "foo@bar.com"
subj = "hello"
date = datetime.datetime.now().strftime( "%d/%m/%Y %H:%M" )
message_text = "Hello\nThis is a mail from your server\n\nBye\n"
msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s"
% ( from_addr, to_addr, subj, date, message_text )
smtp.sendmail(from_addr, to_addr, msg)
smtp.quit()
Ответы:
Скрипт, который я использую, очень похож; Я размещаю это здесь как пример того, как использовать модули email. * Для генерации сообщений MIME; так что этот сценарий можно легко изменить, чтобы прикрепить изображения и т. д.
Я полагаюсь на своего интернет-провайдера, чтобы добавить заголовок даты и времени.
Мой интернет-провайдер требует, чтобы я использовал безопасное соединение smtp для отправки почты, я полагаюсь на модуль smtplib (загружаемый по адресу http://www1.cs.columbia.edu/~db2501/ssmtplib.py )
Как и в вашем сценарии, имя пользователя и пароль (указанные ниже фиктивные значения), используемые для аутентификации на SMTP-сервере, представлены в исходном тексте в виде обычного текста. Это слабое место в системе безопасности; но лучшая альтернатива зависит от того, насколько тщательно вы должны (хотите?) относиться к их защите.
=======================================
источник
from ssmtplib import SMTP_SSL as SMTP
наfrom smtplib import SMTP_SSL as SMTP
, и этот пример будет работать из стандартной библиотеки Python.msg['To'] = ','.join(destination)
, иначе пункт назначения не отображается в GmailМетод, который я обычно использую ... не сильно отличается, но немного
это оно
источник
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
Также, если вы хотите выполнить smtp-аутентификацию с TLS, а не с SSL, вам просто нужно изменить порт (используйте 587) и выполнить smtp.starttls (). Это сработало для меня:
источник
Основная проблема, которую я вижу, заключается в том, что вы не обрабатываете никаких ошибок: .login () и .sendmail () имеют задокументированные исключения, которые они могут генерировать, и похоже, что .connect () должен каким-то образом указать, что это было невозможно подключиться - вероятно, исключение вызвано базовым кодом сокета.
источник
Убедитесь, что у вас нет брандмауэров, блокирующих SMTP. Когда я в первый раз попытался отправить электронное письмо, оно было заблокировано брандмауэром Windows и McAfee - на то, чтобы найти их обоих, потребовалась целая вечность.
источник
Как насчет этого?
источник
следующий код отлично работает для меня:
Ссылка: http://www.mkyong.com/python/how-do-send-email-in-python-via-smtplib/
источник
smtpserver.close()
Должно быть:,smtpserver.quit()
потомуclose()
что TLS-соединение не прерывается должным образом!close()
будет вызван во времяquit()
.Убедитесь, что вы форматируете дату в правильном формате - RFC2822 .
источник
Пример кода, который я сделал для отправки почты с использованием SMTP.
источник
Видите все эти длинные ответы? Пожалуйста, позвольте мне заняться саморекламой, изложив все это в нескольких строках.
Импорт и подключение:
Тогда это просто однострочный:
Он фактически закроется, когда выйдет за рамки (или его можно закрыть вручную). Кроме того, это позволит вам зарегистрировать свое имя пользователя в связке ключей, так что вам не нужно будет записывать свой пароль в свой сценарий (это действительно беспокоило меня перед написанием
yagmail
!)Чтобы узнать о пакете / установке, советах и уловках, пожалуйста, посмотрите git или pip , доступные как для Python 2, так и для Python 3.
источник
ты можешь сделать это
источник
Вот рабочий пример для Python 3.x
источник
На основе этого примера я сделал следующую функцию:
если вы передадите только,
body
тогда будет отправлено обычное текстовое сообщение, но если вы передадитеhtml
аргумент вместе сbody
аргументом, будет отправлено электронное письмо в формате html (с откатом к текстовому содержимому для почтовых клиентов, которые не поддерживают типы html / mime).Пример использования:
Btw. Если вы хотите использовать Gmail в качестве тестового или производственного SMTP-сервера, включите временный или постоянный доступ к менее защищенным приложениям:
источник