Okay, I know there is a few questions out there addressing this, but I cannot find a way to make it work properly. I would assume it is as simple as the below code, but this does not attach my file. Any help would be greatly appreciated. I am also very new to Python. Is there a mail module that I should be importing to make the function work?

import smtplib

fromaddr = "example@example.com

toaddrs = "reciever@example.com

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()

解决方案

Send a multipart email with the appropriate MIME types.

So possible something like this (I tested this):

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 = "sender@example.com"

emailto = "destination@example.com"

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()

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐