почта на python, тема не передается

#python #sendmail

#python #отправка почты

Вопрос:

я отправляю gmail через python, но не получаю никакой темы. Я понимаю, что в коде, который я вам показываю, нет темы, но я безуспешно перепробовал множество вариантов. может кто-нибудь сказать мне, как реализовать тему. Тема будет каждый раз одной и той же.

         fromaddr = 'XXXX@gmail.com'
        toaddrs = 'jason@XXX.com'
        msg = 'Portal Test had an error'

        #provide gmail user name and password
        username = 'XXXX'
        password = 'XXXXX'

        # functions to send an email
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(username,password)
        server.sendmail(fromaddr, toaddrs, msg)
        server.quit()
  

Ответ №1:

При отправке электронной почты через Интернет есть 2 важных шага — создайте сообщение RFC-2822, а затем отправьте его с помощью SMTP. Вы просматривали часть SMTP, но изначально не создали правильное сообщение. Это проще продемонстрировать, выполнив это.

 >>> from email.mime.text import MIMEText
>>>
>>> fromaddr = 'XXXX@gmail.com'
>>> toaddrs = 'jason@XXX.com'
>>> subject = 'This is an important message'
>>> content = 'Portal Test had an error'
>>>
>>> # constructing a RFC 2822 message
... msg = MIMEText(content)
>>> msg['From'] = fromaddr
>>> msg['To'] = toaddrs
>>> msg['Subject'] = subject
  

Сообщение RFC 2822 на самом деле представляет собой фрагмент текста, который выглядит следующим образом:

 >>> print msg
From nobody Tue Apr 05 11:37:50 2011
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: XXXX@gmail.com
To: jason@XXX.com
Subject: This is an important message

Portal Test had an error
  

При этом вы должны иметь возможность отправлять ее, используя свой SMTP-код. Обратите внимание, что некоторые данные, такие как адрес from и to, повторяются на обоих этапах.

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

1. передается ли это в отдельный текстовый файл? электронные письма отправлялись просто отлично с указанием кому, из и тела… просто нет темы

Ответ №2:

Вам нужно заполнить заголовок «Тема».

Смотрите следующую страницу для получения некоторых примеров того, как это сделать правильно: 18.1.11. электронная почта: Примеры. Первый делает более или менее то, что вы хотите.

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

1. Удалите этот комментарий и вместо этого вставьте код в свой вопрос; это поможет людям прочитать его.

Ответ №3:

Используйте модуль электронной почты Python для создания правильно отформатированного электронного письма, соответствующего RFC-822, включая тему и т.д. Выполнение этого самостоятельно чревато ошибками.

http://docs.python.org/library/email