Ответ 1
Скорее всего, сервер gmail отклонил соединение после команды данных (очень противно им делать это на этом этапе:). Фактическое сообщение, скорее всего, таково:
retcode (421); Msg: 4.7.0 [ip.octets.listed.here 15] Our system has detected an unusual rate of
4.7.0 unsolicited mail originating from your IP address. To protect our
4.7.0 users from spam, mail sent from your IP address has been temporarily
4.7.0 rate limited. Please visit
4.7.0 https://support.google.com/mail/answer/81126 to review our Bulk Email
4.7.0 Senders Guidelines. qa9si9093954wjc.138 - gsmtp
Откуда я знаю это? Потому что я пробовал это:) с помощью s.set_debuglevel(1)
, который печатает SMTP-разговор, и вы можете увидеть из первых рук, в чем проблема.
У вас есть два варианта:
-
Продолжайте использовать это реле; как объясняется Google, это незашифрованный gmail-to-gmail, и вы должны зачеркнуть свой ip через свою процедуру
-
Самым надежным вариантом является переход на TLS с аутентификацией
Здесь, как выглядит измененный источник:
# skipped your comments for readability
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
me = "[email protected]"
my_password = r"your_actual_password"
you = "[email protected]"
msg = MIMEMultipart('alternative')
msg['Subject'] = "Alert"
msg['From'] = me
msg['To'] = you
html = '<html><body><p>Hi, I have the following alerts for you!</p></body></html>'
part2 = MIMEText(html, 'html')
msg.attach(part2)
# Send the message via gmail regular server, over SSL - passwords are being sent, afterall
s = smtplib.SMTP_SSL('smtp.gmail.com')
# uncomment if interested in the actual smtp conversation
# s.set_debuglevel(1)
# do the smtp auth; sends ehlo if it hasn't been sent already
s.login(me, my_password)
s.sendmail(me, you, msg.as_string())
s.quit()
Теперь, если попытаться "обмануть" систему и отправить другим (не-gmail) адресом, который он хочет: a) потребовать, чтобы вы подключились к другому имени хоста (некоторые из записей MX для gmail), затем b) остановить вы и закройте соединение на основе черного списка ip и c) сделайте обратный DNS, DKIM и множество других контрмер, чтобы убедиться, что вы фактически контролируете домен, который вы представили в адресе MAIL FROM:.
Наконец, есть также опция 3) - используйте любую другую услугу ретрансляции электронной почты, есть много хороших:)