一、两个模块
Python使用SMTP发送邮件的两个模块:smtplib模块、email模块。
- smtplib:负责发送邮件
- email:负责构建邮件
二、SMTP端口
1)未加密端口,smtplib.SMTP接口,端口:25
2)使用SSL加密,smtplib.SMTP_SSL接口,端口:465
3)使用TLS加密,端口:587
三、四大步骤
1、构造邮件内容
1
2
3
4
5
|
# 纯文本
msg = MIMEText(content)
# 附件
msg = MIMEMultipart()
|
2、连接邮件服务器
1
|
s = smtplib.SMTP( "smtp.qq.com" , 25 )
|
3、登陆邮件服务器
1
|
s.login(msg_from, passwd)
|
msg_from:指发送者的邮箱
passwd:指发送者的密码,这个密码不是你的QQ登陆密码,而是你在QQ邮箱设置开启SMTP之后的一个授权码
4、发送邮件
1
|
s.sendmail(msg_from, msg_to, msg.as_string())
|
msg_from:发送方
msg_to:收件方
msg.as_string():要发送的消息
四、常用场景
1、纯文本邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 发送者
msg_from = "xxxxx@qq.com"
# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxxx"
# 接受者
msg_to = "xxxx@qq.com"
# 邮件文本
content = 'Python 邮件发送测试...'
# 邮件主题
subject = "test"
# 生成一个MIMEText对象(还有一些其它参数)
msg = MIMEText(content)
# 放入邮件主题
msg[ 'Subject' ] = Header(subject, 'utf-8' )
# 放入发件人
msg[ 'From' ] = msg_from
try :
# 连接邮件服务器
s = smtplib.SMTP( "smtp.qq.com" , 25 )
# 登录到邮箱
s.login(msg_from, passwd)
# 发送邮件:发送方,收件方,要发送的消息
s.sendmail(msg_from, msg_to, msg.as_string())
print ( '成功' )
except s.SMTPException as e:
print (e)
finally :
s.quit()
|
2、发送html文本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 发送者
msg_from = "xxxx@qq.com"
# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxx"
# 接受者
msg_to = "xxxx@qq.com"
# 邮件文本
content = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com" rel="external nofollow" >这是一个链接</a></p>
"""
# 邮件主题
subject = "test"
# 生成一个MIMEText对象(
msg = MIMEText(content, 'html' , 'utf-8' )
# 放入邮件主题
msg[ 'Subject' ] = Header(subject, 'utf-8' )
# 放入发件人
msg[ 'From' ] = msg_from
try :
# 连接邮件服务器
s = smtplib.SMTP( "smtp.qq.com" , 25 )
# 登录到邮箱
s.login(msg_from, passwd)
# 发送邮件:发送方,收件方,要发送的消息
s.sendmail(msg_from, msg_to, msg.as_string())
print ( '成功' )
except s.SMTPException as e:
print (e)
finally :
s.quit()
|
3、发送附件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
# 发送者
msg_from = "xxxx@qq.com"
# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxx"
# 接受者
msg_to = "xxxx@qq.com"
# 邮件主题
subject = "test"
# 生成一个MIMEMultipart对象(
msg = message = MIMEMultipart()
# 邮件文本
message.attach(MIMEText( '这是菜鸟教程Python 邮件发送测试……' , 'plain' , 'utf-8' ))
# 放入邮件主题
msg[ 'Subject' ] = Header(subject, 'utf-8' )
# 放入发件人
msg[ 'From' ] = msg_from
# 添加附件
att1 = MIMEText( open ( './wordcloud_singer.py' , 'rb' ).read(), 'base64' , 'utf-8' )
att1[ "Content-Type" ] = 'application/octet-stream'
att1[ "Content-Disposition" ] = 'attachment; filename="test.txt"'
msg.attach(att1)
try :
# 连接邮件服务器
s = smtplib.SMTP( "smtp.qq.com" , 25 )
# 登录到邮箱
s.login(msg_from, passwd)
# 发送邮件:发送方,收件方,要发送的消息
s.sendmail(msg_from, msg_to, msg.as_string())
print ( '成功' )
except s.SMTPException as e:
print (e)
finally :
s.quit()
|
以上就是Python 发送SMTP邮件的简单教程的详细内容,更多关于Python 发送邮件的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/lemon-le/p/14858267.html