Странное отображение поля «От» в электронном письме smtp, отправленном на python

#python #email #smtp #smtplib

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

Вопрос:

Я получаю странное отображение поля From в электронном письме smtp.Отображение выглядит так;

от: test@gmail.com Кому: test@gmail.com , Тема: Сообщение test@gmail.com чтобы:

поле «кому» пустое, но другой получатель «кому», т.е. test1@gmail.com успешно получил электронное письмо. Ниже приведен мой код.

 import smtplib

def SendEmailScenario1():
    gmail_user = "test@gmail.com"
    gmail_password = '******'

    sent_from = gmail_user
    to = ["test1@gmail.com"]
    subject = 'Message'
    body = "Hi There! Done1"

    email_text = """
    From: %s 
    To: %s 
    Subject: %s

    %s
    """ % (sent_from, ", ".join(to), subject, body)
    try:
        server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
        server.ehlo()
        server.login(gmail_user, gmail_password)
        server.sendmail(sent_from, to, email_text)
        server.close()

        print ('Email sent!')
    except:
        print ('Something went wrong...')
def SendEmailScenario2():
    gmail_user = "test@gmail.com"
    gmail_password = '******'

    sent_from = gmail_user
    to = ["test1@gmail.com"]
    subject = 'Message'
    body = "Hi There! Done 2"

    email_text = """
    From: %s 
    To: %s 
    Subject: %s

    %s
    """ % (sent_from, ", ".join(to), subject, body)
    try:
        server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
        server.ehlo()
        server.login(gmail_user, gmail_password)
        server.sendmail(sent_from, to, email_text)
        server.close()

        print ('Email sent!')
    except:
        print ('Something went wrong...')
SendEmailScenario1()
SendEmailScenario2()
  

Как перевести его в обычный режим без использования MIMEText, MimeMultipart

Ответ №1:

RFC822 указывает, что заголовок должен заканчиваться 'rn' :

field = field-name «:» [field-body ] CRLF

Кроме того, заголовки должны быть отделены от тела пустым 'rn' :

[Тело] отделено от заголовков нулевой строкой (т. Е. строкой, перед которой нет ничего, предшествующего CRLF)

Итак, сообщение должно быть построено следующим образом:

 headers = "From: %srnTo: %srnSubject: %srnrn"
email_text = headers   body
  

Смотрите также Пример в документах smtplib.