Как отправить почтовые вложения?

У меня есть проблемы при понимании, как послать вложение по электронной почте с помощью Python. Я успешно послал простые сообщения по электронной почте с smtplib. Мог кто-то объяснять, как отправить вложение в электронном письме. Я знаю, что существуют другие, размещает в Интернете, но как новичок Python я нахожу, что они трудно понимают.

262
задан martineau 23 June 2017 в 04:16
поделиться

3 ответа

Вот еще один:

import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate


def send_mail(send_from, send_to, subject, text, files=None,
              server="127.0.0.1"):
    assert isinstance(send_to, list)

    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = COMMASPACE.join(send_to)
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    msg.attach(MIMEText(text))

    for f in files or []:
        with open(f, "rb") as fil:
            part = MIMEApplication(
                fil.read(),
                Name=basename(f)
            )
        # After the file is closed
        part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
        msg.attach(part)


    smtp = smtplib.SMTP(server)
    smtp.sendmail(send_from, send_to, msg.as_string())
    smtp.close()

Он почти такой же, как и в первом примере ... Но там должно быть легче заглянуть.

386
ответ дан 23 November 2019 в 02:34
поделиться

вот код, который я в итоге использовал:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders


SUBJECT = "Email Data"

msg = MIMEMultipart()
msg['Subject'] = SUBJECT 
msg['From'] = self.EMAIL_FROM
msg['To'] = ', '.join(self.EMAIL_TO)

part = MIMEBase('application', "octet-stream")
part.set_payload(open("text.txt", "rb").read())
Encoders.encode_base64(part)

part.add_header('Content-Disposition', 'attachment; filename="text.txt"')

msg.attach(part)

server = smtplib.SMTP(self.EMAIL_SERVER)
server.sendmail(self.EMAIL_FROM, self.EMAIL_TO, msg.as_string())

Код во многом совпадает с постом Оли. Спасибо всем

Код основан на Проблема с вложением двоичного файла по электронной почте.

64
ответ дан 23 November 2019 в 02:34
поделиться
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
import smtplib

msg = MIMEMultipart()
msg.attach(MIMEText(file("text.txt").read()))
msg.attach(MIMEImage(file("image.png").read()))

# to send
mailer = smtplib.SMTP()
mailer.connect()
mailer.sendmail(from_, to, msg.as_string())
mailer.close()

Адаптировано из здесь .

27
ответ дан 23 November 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: