python发送附带邮件(玩转Python之快速发邮件)
python发送附带邮件(玩转Python之快速发邮件)server.quit() server.sendmail(sender to_addr msg.as_string()) server = smtplib.SMTP() server.connect(host port) server.login(username password)
⼀、如何发⼀封简单的邮件
步骤:构造邮件(email)- 发送邮件(smtplib)-发送成功
⼆、smtplib模块(如下)
import smtplib
server = smtplib.SMTP()
server.connect(host port)
server.login(username password)
server.sendmail(sender to_addr msg.as_string())
server.quit()
解析:
(1)第⼀⾏,是引⼊smtplib模块
(2)第⼆⾏,server是smtplib.SMTP()创建出来的对象,SMTP 是smtpli把模块中的⼀个类
(3)SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思,
SMTP 协议是由源服务器到⽬的地服务器传送邮件的⼀组规则
(4)第三⾏代码,连接(connect)指定的服务器,host是指定连接的邮箱服务器;port 是
端⼝ 默认端⼝号是25
***如何查看⾃⼰的端⼝号?
答:登录邮箱后,在【设置-选项-POP和IMAP】查找相关的端⼝号
(5)若使⽤的是QQ邮箱,SMTP服务器地址是:smtp.qq.com,加密端⼝是465,默认的端
口是25;QQ 邮箱采⽤的加密⽅式是SSL
server = smtplib.SMTP_SSL()
#如果端⼝是⽤SSL加密,请这样写代码。其中server是通过smtplib.SMTP()创建出来的对象
server.connect('smtp.qq.com' 465)
#如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com'
465 'utf-8')
(6)第四⾏代码,login是登录的意思,也就是登录你指定的服务器⽤的,需要输⼊两个参
数:登录邮箱和授权
(7)第五⾏代码sendmail是“发送邮件”的意思,是发送邮件⽤的,sendmail()⽅法需要三个
参数:发件⼈,收件⼈和邮件内容
server.sendmail(from_addr to_addr msg.as_string())
#from_addr:邮件发送地址,就是上⾯的username
#to_addr:邮件收件⼈地址
#msg.as_string():为⼀个字符串类型
(8)最后⼀⾏代码,quit是“退出”的意思,就是退出服务器
⼆、email模块(如下)
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
(1)MIMEText()⽅法需要输⼊三个参数:⽂本内容,⽂本类型和⽂本编码
MIMEText(msg type chartset)
# msg:⽂本内容,可⾃定义
# type:⽂本类型,默认为plain(纯⽂本)
# chartset:⽂本编码,中⽂为“utf-8”
三、梳理发邮件的代码结构
(1)导⼊模块:
# smtplib ⽤于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email ⽤于构建邮件内容
(2)定义变量:
# 发信⽅的信息:发信邮箱,QQ 邮箱授权码
from_addr = input('请输⼊发件⼈的邮箱号码From: ')
password = input('请输⼊发件⼈的邮箱密码Password: ')
# 输⼊SMTP服务器地址:
smtp_server = input('请输⼊邮箱服务器地址SMTP server: ')
# 输⼊收件⼈地址:
to_addr = input('请输⼊收件⼈邮箱地址To: ')
# 邮箱正⽂内容,第⼀个参数为内容,第⼆个参数为格式(plain 为纯⽂本),第三个参数为编码
msg = MIMEText('hi ⼩课让学习更轻松' 'plain' 'utf-8')
(3)使⽤⽅法:
# 开启发信服务,这⾥使⽤的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server 465)
# 登录发信邮箱
server.login(from_addr password)
# 发送邮件
server.sendmail(from_addr to_addr msg.as_string())
# 关闭服务器
server.quit()