700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python发送邮件带附件_使用python发送邮件可带附件

python发送邮件带附件_使用python发送邮件可带附件

时间:2019-06-02 20:51:02

相关推荐

python发送邮件带附件_使用python发送邮件可带附件

使用

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

在python中,MIME的这些对象的继承关系如下。

MIMEBase

|-- MIMENonMultipart

|-- MIMEApplication

|-- MIMEAudio

|-- MIMEImage

|-- MIMEMessage

|-- MIMEText

|-- MIMEMultipart

一般来说,不会用到MIMEBase,而是直接使用它的继承类。MIMEMultipart有attach方法,而MIMENonMultipart没有,只能被attach。

MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。

最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。

以上内容出自原文,下方带有链接。

特别说明

想通过QQ邮箱来发送邮件,需开启QQ邮箱的设置-账户里POP3/SMTP服务,通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了。

开启pop/smtp

授权码

测试代码

#!/usr/bin/python

#!/usr/bin/python

# _*_ coding: utf-8 _*_

import os

import smtplib

from email.mime.text import MIMEText

from email.utils import formataddr

from email.header import Header

'''

函数说明:Send_email_text() 函数实现发送带有附件的邮件,可以群发,附件格式包括:xlsx,pdf,txt,jpg,png,mp3等都可以

参数说明:

1. subject:邮件主题

2. content:邮件正文

3. filepath:附件的地址, 输入格式为["","",...]

4. receive_email:收件人地址, 输入格式为["","",...]

'''

def Send_email_text(subject,content,filepath,receive_email):

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.application import MIMEApplication

sender = 'xxx@'#发送方邮箱

passwd = 'gmdfztzbinlvbiei' #填入发送方邮箱的授权码

receivers = receive_email#收件人邮箱

msgRoot = MIMEMultipart()

msgRoot['Subject'] = subject

msgRoot['From'] = sender

if len(receivers)>1:

msgRoot['To'] = ','.join(receivers) #群发邮件

else:

msgRoot['To'] = receivers[0]

part = MIMEText(content,_charset="utf-8")

msgRoot.attach(part)

##添加附件部分

for path in filepath:

part = MIMEApplication(open(path,'rb').read())

part.add_header('Content-Disposition', 'attachment', filename=path)

msgRoot.attach(part)

try:

#s = smtplib.SMTP()

#s.connect("smtp.") #这里我使用的是阿里云邮箱,也可以使用163邮箱:

s = smtplib.SMTP_SSL('',465) #邮件服务器及端口号,qq邮箱

s.login(sender, passwd)

s.sendmail(sender, receivers, msgRoot.as_string())

print ("邮件发送成功")

except smtplib.SMTPException as e:

print("Error, 发送失败")

finally:

s.quit()

subject = "文件测试"

content = "Python 邮件测试"

#file_path = ["smtp.py","smtp_attach.py","smtpatt.py"] #发送三个文件到三个邮箱

file_path = os.listdir('./')

files.remove('smtp_attach.py')

receive_email = ["xxx@","xxx@","xxx@"]

Send_email_text(subject,content,file_path,receive_email)

测试结果

相关参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。