Отображать имя пользователя в почте, отправленной из smtplib

#python #email #gmail #smtplib

#python #Адрес электронной почты #gmail #smtplib

Вопрос:

Я написал скрипт на python для отправки почты с использованием smtplib. Все работает нормально, за исключением того, что, когда пользователь получает почту, он не может видеть имя моей учетной записи Google, вместо этого он получает почтовый идентификатор. есть ли способ сделать это правильно?

Я предполагаю, что это должно что-то сделать здесь, но я не уверен.

 msg = MIMEMultipart()

msg['From'] = from_addr
msg['To'] = ','.join(recipients_addr)
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
return msg
 

введите описание изображения здесь

введите описание изображения здесь

Первое изображение — это изображение, отправленное с помощью smtplib. Имя пользователя отсутствует.

Второе обычно отправляется из gmail.

Ответ №1:

Для этого вам необходимо указать как адрес электронной почты, так и имя учетной записи.

Для форматирования данных можно использовать функцию email.utils.formataddr:

 >>> from email import utils
>>> utils.formataddr(('Jane Smith', 'jsmith@example.com'))
'Jane Smith <jsmith@example.com>'
 

В коде вопроса, вы бы сделали что-то вроде

 from_addr = 'praneeth.vasarla@example.com'
from name = 'Praneeth Vasarla'
msg['from'] = formataddr((from_name, from_addr))
 

Комментарии:

1. @snakecharmerb Я получил эту ошибку NameError: name 'formataddr' is not defined . Какой пакет я должен установить?

2. Я использовал from email.utils import formataddr , и это сработало хорошо. Большое спасибо.