Как я могу отправить по электронной почте.приложение CSV-файл с помощью Python [дубликат]
На этот вопрос уже есть ответ здесь:
прикрепите txt-файл в Python smtplib
2 ответа
Хорошо, я знаю, что есть несколько вопросов, касающихся этого, но я не могу найти способ заставить его работать должным образом. Я бы предположил, что это так же просто, как приведенный ниже код, но это не прикрепляет мой файл. Любая помощь будет очень признательна. Я тоже очень новый для Python. Есть ли почтовый модуль, который я должен импортировать, чтобы заставить эту функцию работать?
import smtplib
fromaddr = "[email protected]
toaddrs = "[email protected]
msg = "help I cannot send an attachment to save my life"
attach = ("csvonDesktp.csv")
username = user
password = password
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg, attach)
server.quit()
2 ответов:
Отправьте составное электронное письмо с соответствующими типами MIME.
Https://docs.python.org/2/library/email-examples.html
Поэтому возможно что-то вроде этого (я проверил это):
import smtplib import mimetypes from email.mime.multipart import MIMEMultipart from email import encoders from email.message import Message from email.mime.audio import MIMEAudio from email.mime.base import MIMEBase from email.mime.image import MIMEImage from email.mime.text import MIMEText emailfrom = "[email protected]" emailto = "[email protected]" fileToSend = "hi.csv" username = "user" password = "password" msg = MIMEMultipart() msg["From"] = emailfrom msg["To"] = emailto msg["Subject"] = "help I cannot send an attachment to save my life" msg.preamble = "help I cannot send an attachment to save my life" ctype, encoding = mimetypes.guess_type(fileToSend) if ctype is None or encoding is not None: ctype = "application/octet-stream" maintype, subtype = ctype.split("/", 1) if maintype == "text": fp = open(fileToSend) # Note: we should handle calculating the charset attachment = MIMEText(fp.read(), _subtype=subtype) fp.close() elif maintype == "image": fp = open(fileToSend, "rb") attachment = MIMEImage(fp.read(), _subtype=subtype) fp.close() elif maintype == "audio": fp = open(fileToSend, "rb") attachment = MIMEAudio(fp.read(), _subtype=subtype) fp.close() else: fp = open(fileToSend, "rb") attachment = MIMEBase(maintype, subtype) attachment.set_payload(fp.read()) fp.close() encoders.encode_base64(attachment) attachment.add_header("Content-Disposition", "attachment", filename=fileToSend) msg.attach(attachment) server = smtplib.SMTP("smtp.gmail.com:587") server.starttls() server.login(username,password) server.sendmail(emailfrom, emailto, msg.as_string()) server.quit()
Есть полный пример в документации Python. Я могу скопировать и вставить соответствующие части здесь, но вся страница не очень длинная, поэтому лучше, если вы пойдете и посмотрите на нее там.
Comments