Python: отправка почты в html с помощью sendmail


Может ли кто-нибудь сказать мне, как отправить письмо в формате HTML с помощью sendmail на python?

Я хотел бы отправить это:

<pre>some code</pre>

Версия Python 2.4.3 и не может быть обновлена.

4   2   2011-02-15 14:01:20

4 ответа:

# assemble the mail content
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
message = MIMEMultipart('alternative')
message.add_header('Subject', 'subject goes here')
# add a few more add_header calls here for things like "To", "Cc", "From"
message.attach(MIMEText('some code')) # plain text alternative
message.attach(MIMEText('<html><pre>some code</pre></html>', # html content
                        'html'))

# pipe the mail to sendmail
sendmail = os.popen('sendmail recipient@example.org', 'w')
sendmail.write(message.as_string())
if sendmail.close() is not None:
   print 'error: failed to send mail :-(' 

Вы можете проверить код микро-фреймворка webpy для различных методов отправки электронной почты, включая sendmail: https://github.com/webpy/webpy/blob/master/web/utils.py#L1415

Просто введите HTML-код в сообщение, а также укажите версию mime и содержимое как text/html. http://www.tutorialspoint.com/python/python_sending_email.htm

Я нахожу простой способ сделать это:

Когда я запускаю свой скрипт, я записываю свои выходные данные в файл (mail.txt), то в конце я просто позвоню:

os.popen('cat mail.txt | sendmail -t')

Почта.содержание txt:

To: my.mail@gmail.com
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="123"
Subject: My subject

This is a MIME-encapsulated message

--123
Content-Type: text/html

<html>
   <head>
      <title>HTML E-mail</title>
   </head>
   <body>
      <pre>Some code</pre>
   </body>
</html>

Может быть, это не лучший способ сделать это, но для меня работает отлично...