Я отправляю электронные письма с помощью Python, но переменная msg["Subject"] заполняет тело письма вместо поля темы, а тело переменной ничего не заполняет...
Все остальное работает нормально, но не могу понять, почему сабж это тело а тело пусто? Что я пропустил?
Вот код:
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['From'] = "[email protected]"
msg['To'] = '[email protected]'
msg['Subject'] = "for next delivery, please supply"
body = Merged_Dp_Ind_str
msg.attach(MIMEText(body, 'plain'))
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('[email protected]', 'password1')
server.sendmail(msg['From'], msg['To'], msg['Subject'])
server.quit()
Если вы еще раз посмотрите на подсветку синтаксиса, то увидите, что строка msg['From'] = "[email protected]'
неверна. Вы начинаете строку с "
, но не заканчиваете ее правильно, потому что вы заканчиваете на '
(а не на "
). Так должно быть правильно: msg['From'] = "[email protected]"
редактирование сообщения не удаляет предыдущие значения, мы все еще можем видеть ваш пароль, обязательно измените его
Да, это была ошибка копирования/вставки. Я также сменил пароль, спасибо за предупреждение.
Ваше сообщение в порядке, но на самом деле вы его не отправляете; вы отправляете только тему.
server.sendmail(msg['From'], msg['To'], msg['Subject'])
Вы, видимо, имеете в виду
server.sendmail(msg['From'], msg['To'], text)
Однако вам, вероятно, следует обновить свой код, чтобы вместо этого использовать современные API Python 3.6+.
Правильный современный способ форматирования и отправки сообщения выглядит примерно так:
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg['From'] = "[email protected]"
msg['To'] = '[email protected]'
msg['Subject'] = "for next delivery, please supply"
msg.set_content(Merged_Dp_Ind_str)
with smtplib.SMTP('smtp.gmail.com', 587) as server:
server.starttls()
server.login('[email protected]', 'password1')
server.send_message(msg)
server.quit()
вы можете изменить свой пароль....