При отправке электронной почты с помощью Python переменная msg["Subject"] ведет себя не так, как должна

Я отправляю электронные письма с помощью 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()

скриншот почтового ящика

вы можете изменить свой пароль....

Nullman 14.12.2020 09:42

Если вы еще раз посмотрите на подсветку синтаксиса, то увидите, что строка msg['From'] = "[email protected]' неверна. Вы начинаете строку с ", но не заканчиваете ее правильно, потому что вы заканчиваете на ' (а не на "). Так должно быть правильно: msg['From'] = "[email protected]"

Daniel 14.12.2020 09:42

редактирование сообщения не удаляет предыдущие значения, мы все еще можем видеть ваш пароль, обязательно измените его

Nullman 14.12.2020 09:49

Да, это была ошибка копирования/вставки. Я также сменил пароль, спасибо за предупреждение.

Greg 14.12.2020 10:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
766
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше сообщение в порядке, но на самом деле вы его не отправляете; вы отправляете только тему.

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()

Другие вопросы по теме