我用python编程。我已经有一个函数发送带附件的邮件,但问题是它接收邮件并将其作为附件。我需要它将消息视为消息,将附件视为附件。我已经调查过,我发现这与MIME Multipart“MIXED”有关,但我不知道如何添加或更改为我的实际功能。
这是我正在使用的函数的python代码:
def enviarCorreo(fromaddr, toaddr, file):
msg = MIMEMultipart('mixed')
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = 'asunto'
#adjunto
adjunto = MIMEBase('application', "octet-stream")
adjunto.set_payload(open(file, "rb").read())
encode_base64(adjunto)
adjunto.add_header('Content-Disposition', 'attachment; filename= "%s"' % file)
msg.attach(adjunto)
#enviar
server = smtplib.SMTP('localhost')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddr, msg.as_string())
server.quit()
return
答案 0 :(得分:3)
您忘记将文字附加为msg.attach(MIMEText(text))
def enviarCorreo(fromaddr, toaddr, text, file):
msg = MIMEMultipart('mixed')
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = 'asunto'
#This is the part you had missed.
msg.attach( MIMEText(text) )
#adjunto
adjunto = MIMEBase('application', "octet-stream")
adjunto.set_payload( open(file,"rb").read() )
Encoders.encode_base64(adjunto)
adjunto.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
msg.attach(adjunto)
server = smtplib.SMTP('localhost')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddr, msg.as_string())
server.close()
enviarCorreo("x@from.com", ["y@to.com"], "Hello World", ['/tmp/sample.png'])
看看这是否适合你。
答案 1 :(得分:0)
您可以在email module examples中找到答案(以及其他有用的想法)。
一个例子似乎使用msg.preamble = "..."
作为主要消息文本。