使用Python发送电子邮件

SMTP发送邮件:

我这里使用的qq邮箱服务器,所以运行之前应先把qq邮箱中的相应服务打开;

 

1.发送文本邮件

#发送文本邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender='[email protected]'
pwd='xxxxxxxx'#在开通相关的服务是会给你相应的密码,不是你自己登陆qq的密码

receivers=['[email protected]','[email protected]']#收件人的邮箱

#三个参数:第一个为文本内容,第二个为plain设置文本格式,第三个utf-8设置编码
message=MIMEText('PYTHON 测试发送邮件。。。。。','plain','utf-8')
#标准邮件需要3个头部信息
message['From']=Header("邮件测试",'utf-8')#发件人
message['To']=Header("测试",'utf-8')#收件人
message['Subject']=Header('Python SMTP邮件测试','utf-8')#邮件标题

try:
    #使用非本地服务器,需要使用ssl连接
    smtpObj=smtplib.SMTP_SSL("smtp.qq.com",465)
    smtpObj.login(sender,pwd)#登录第三方服务器
    smtpObj.sendmail(sender,receivers,message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件,因为:%s"% e)

2.发送带有附件的邮件(包括HTML格式的邮件):

#发送带附件的邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
sender='[email protected]'
pwd='XXXXXXXXXXXXXXX'#开通邮箱服务后,设置客户端的授权密码

receivers=['[email protected]']#收件人的邮箱


#创建一个带附件的实例
message=MIMEMultipart("related")


# #三个参数:第一个为文本内容,第二个为plain设置文本格式,第三个utf-8设置编码
# message=MIMEText('PYTHON 测试发送邮件。。。。。','plain','utf-8')
#标准邮件需要3个头部信息
message['From']=Header("邮件测试",'utf-8')#发件人
message['To']=Header("测试",'utf-8')#收件人
message['Subject']=Header('Python SMTP邮件测试','utf-8')#邮件标题


#邮件正文
message.attach(MIMEText('PYTHON 测试发送邮件。。。。。','plain','utf-8'))

#构造附件1,传送当前目录下的text1.txt文件
att1=MIMEText(open('test1.txt','rb').read(),'base64','utf-8')
att1["Content-Type"]='application/octet-stream'
att1["Content-Disposition"]='attachment;filename="zxj.txt"'
message.attach(att1)


#构造附件2,传送当前目录下的图片
fp=open('text.jpg','rb')
msgImage=MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID','<1>')
message.attach(msgImage)

#发送html格式的文本并有图片嵌入,此时,前面的邮件正文变成附近发送
msgAlternative=MIMEMultipart("alternative")
mail_msg="""

Python 邮件测试

图片实例:

""" msgAlternative.attach(MIMEText(mail_msg,'html','utf-8')) message.attach(msgAlternative) try: #使用非本地服务器,需要使用ssl连接 smtpObj=smtplib.SMTP_SSL("smtp.qq.com",465) smtpObj.login(sender,pwd)#登录第三方服务器 smtpObj.sendmail(sender,receivers,message.as_string()) print("邮件发送成功") except smtplib.SMTPException as e: print("Error: 无法发送邮件,因为:%s"% e)

 

 

 

你可能感兴趣的:(Python)