Я новичок в python .. На самом деле, я пытаюсь отправить признак электронной почты с помощью python: html body, текст альтернативного тела и вложения.Где эквивалент php-класса phpMailer для Python?
Итак, я нашел это tutorial и адаптировать его с аутентификацией GMAIL (учебник найден here)
код у меня есть атм, что:
def createhtmlmail (html, text, subject):
"""Create a mime-message that will render HTML in popular
MUAs, text in better ones"""
import MimeWriter
import mimetools
import cStringIO
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
out = cStringIO.StringIO() # output buffer for our message
htmlin = cStringIO.StringIO(html)
txtin = cStringIO.StringIO(text)
writer = MimeWriter.MimeWriter(out)
#
# set up some basic headers... we put subject here
# because smtplib.sendmail expects it to be in the
# message body
#
writer.addheader("Subject", subject)
writer.addheader("MIME-Version", "1.0")
#
# start the multipart section of the message
# multipart/alternative seems to work better
# on some MUAs than multipart/mixed
#
writer.startmultipartbody("alternative")
writer.flushheaders()
#
# the plain text section
#
subpart = writer.nextpart()
subpart.addheader("Content-Transfer-Encoding", "quoted-printable")
pout = subpart.startbody("text/plain", [("charset", 'us-ascii')])
mimetools.encode(txtin, pout, 'quoted-printable')
txtin.close()
#
# start the html subpart of the message
#
subpart = writer.nextpart()
subpart.addheader("Content-Transfer-Encoding", "quoted-printable")
#
# returns us a file-ish object we can write to
#
pout = subpart.startbody("text/html", [("charset", 'us-ascii')])
mimetools.encode(htmlin, pout, 'quoted-printable')
htmlin.close()
#
# Now that we're done, close our writer and
# return the message body
#
writer.lastpart()
msg = out.getvalue()
out.close()
return msg
import smtplib
f = open("/path/to/html/version.html", 'r')
html = f.read()
f.close()
f = open("/path/to/txt/version.txt", 'r')
text = f.read()
subject = "Prova email html da python, con allegato!"
message = createhtmlmail(html, text, subject)
gmail_user = "[email protected]"
gmail_pwd = "thegmailpassword"
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(gmail_user, gmail_pwd)
server.sendmail(gmail_user, "[email protected]", message)
server.close()
и работает .. Теперь только пропустить приложение .. И я не могу добавить вложение (от this сообщение)
Итак, почему нет класса python, такого как phpMailer для php? Это потому, что для программиста с программированием на языке python, отправляющего html-адрес электронной почты с вложением и текстом body body, так легко, что класс не нужен? Или потому, что я просто не нашел его?
Если я смогу написать такой класс, когда я буду достаточно хорош с python, это было бы полезно для кого-то?
добавьте пример альтернативного текста, и у вас есть победитель! – YHVH
Ничего себе, это здорово! Позволяет ли ваш модуль отправлять почту через Gmail smtp? Где я должен указать порт smtp (например, server = smtplib.SMTP («smtp.gmail.com», 587) с smtplib) – Strae
@DaNiel: Очень хороший момент, спасибо. Я добавил обновленную версию, которая позволяет указать порт в классе Mailer ('sender = Mailer ('localhost', port = 587) ') http://pypi.python.org/pypi/mailer/0.4 –