Python发送邮件

python发送邮件,各邮件服务商都有smtp服务器,但是注册完邮箱后呢,需要去开启pop3/smtp服务。国内的邮箱基本上都需要第三方登录授权码,在python代码中,登录密码就要替换成授权码。国人的东西,什么都是管控的,因为咱中国人,都太聪明而且无节制。我这里用的是qq邮箱。

1,纯文本格式:

 1 '''
 2     #利用python发送普通的文字邮件
 3     #内建库
 4     smtplib,发送邮件的
 5     email处理文字的
 6 '''
 7 import smtplib
 8 from smtplib import SMTP_SSL
 9 from email.mime.text import MIMEText #处理邮件文本
10 from email.mime.multipart import MIMEMultipart #构造构建主体
11 from email.header import Header #处理邮件头
12 
13 #定义登录信息
14 server = 'smtp.qq.com' #smtp服务器地址
15 user = 'xxxx@qq.com' #登录smtp服务器的用户名
16 pwd = '授权码字符串' #这里不要用邮箱登录密码,会出现验证错误,要用授权码
17 
18 #定义发件人和收件人
19 sender = 'xxx@qq.com' #发件人
20 receiver = 'xxx@outlook.com' #收件人
21 
22 #定义邮件主题和内容
23 title = 'Python测试邮件'
24 content = '这是一封来自python的测试邮件,详情访问https://www.python.org'
25 
26 #开始构造邮件
27 msg = MIMEMultipart() #构造邮件
28 msg['Subject'] = Header(title, 'utf-8') #邮件主题
29 msg['From'] = sender #发件人
30 msg['To'] = receiver #收件人
31 msg.attach(MIMEText(content, 'plain', 'utf-8')) #邮件正文,以plain格式发送,我习惯叫打包内容
32 
33 #开始登录邮箱
34 smtp = SMTP_SSL(server) #以ssl的方式登录邮箱
35 smtp.login(user, pwd) #开始登录
36 smtp.sendmail(sender, receiver, msg.as_string()) #开始发送邮件
37 smtp.quit() #退出邮件服务器

 2,HTML格式:

 1 '''
 2     #利用python发送html格式的邮件
 3     #内建库
 4     smtplib,发送邮件的
 5     email处理文字的
 6 '''
 7 import smtplib
 8 from smtplib import SMTP_SSL
 9 from email.mime.text import MIMEText #处理邮件文本
10 from email.mime.multipart import MIMEMultipart #构造构建主体
11 from email.header import Header #处理邮件头
12 
13 #定义登录信息
14 server = 'smtp.qq.com'
15 user = '958316676@qq.com'
16 pwd = '授权码字符串'
17 
18 #定义发件人和收件人
19 sender = '958316676@qq.com'
20 receiver = 'vipdentfy@outlook.com'
21 
22 #定义邮件标题和内容
23 title = '来自Python的测试邮件'
24 content = '你好,<p>这是来自python的测试邮件.</p>详情请访问:<a href="https://www.python.org">Python官方</a>'
25 
26 #开始构造邮件
27 msg = MIMEMultipart()
28 msg['Subject'] = Header(title, 'utf-8')
29 msg['From'] = sender
30 msg['To'] = receiver
31 
32 #以html格式构造邮件内容
33 msg.attach(MIMEText(content, 'html', 'utf-8'))
34 
35 #开始尝试发送
36 try:
37     smtp = SMTP_SSL(server) #以ssl的方式登录邮箱服务器
38     smtp.set_debuglevel(1) #调试信息
39     smtp.ehlo(server) #向服务器打招呼,类似gmail就要用到这个
40     smtp.login(user, pwd) #登录邮箱
41     smtp.sendmail(sender, receiver, msg.as_string()) #发送邮件
42     smtp.quit()
43     print('发送邮件成功')
44 #开始捕获异常
45 except smtplib.SMTPException:
46     print('邮件发送不成功,请调试程序后再试。')

3,发送带附件的邮件:

 1 '''
 2     #利用python发送带附件的邮件
 3     #内建库
 4     smtplib,发送邮件的
 5     email处理文字的
 6 '''
 7 import smtplib
 8 from smtplib import SMTP_SSL
 9 from email.mime.text import MIMEText #处理邮件文本
10 from email.mime.multipart import MIMEMultipart #构造构建主体
11 from email.header import Header #处理邮件头
12 from email.mime.application import MIMEApplication #处理附件的库
13 
14 #定义smtp服务器信息
15 server = 'smtp.qq.com'
16 user = '958316676@qq.com'
17 pwd = '授权码字符串'
18 
19 #定义收件人和发件人
20 sender = '958316676@qq.com'
21 receiver = 'vipdentfy@outlook.com'
22 
23 #定义邮件标题和内容
24 title = '来自Python的测试邮件 - 带附件'
25 content = '你好,<p>这是一封来自python带附件的测试邮件.</p><p>详情请登录官网查看:<a href="https://www.python.org">Python官网</a></p>'
26 
27 #构造邮件开始
28 msg = MIMEMultipart() #邮件主体
29 msg['Subject'] = Header(title, 'utf-8') #主题
30 msg['From'] = sender #收件人
31 msg['To'] = receiver #发件人
32 msg.attach(MIMEText(content, 'html', 'utf-8'))
33 
34 #找到附件位置以二进制只读方式打开附件
35 attachment = MIMEApplication(open('test.xlsx','rb').read()) #以二进制只读方式打开对应位置的福建
36 #给附件重命名,三个参数,content-dispostion是内容设置,attachment表示附件,filename表示要重新命名的文件名
37 attachment.add_header('Content-Disposition', 'attchament', filename='我是附件.xlsx')
38 #添加到邮件主体
39 msg.attach(attachment)
40 
41 #开始尝试登录邮箱并发送
42 try:
43     smtp = SMTP_SSL(server) #以ssl方式登录
44     smtp.set_debuglevel(0) #关闭调试信息
45     smtp.ehlo(server) #向服务器打招呼
46     smtp.login(user,pwd) #登录
47     smtp.sendmail(sender, receiver, msg.as_string()) #发送
48     smtp.quit() #退出邮箱
49     print('恭喜你,邮件发送成功。')
50 #开始捕获异常
51 except smtplib.SMTPException:
52     print('邮件发送失败,请调试程序后再试。')
原文地址:https://www.cnblogs.com/mafu/p/14046573.html