SMTP
SMTP(Simple Mail Transfer Protocol)即简略邮件传输协定, 它是一组用于由源地址到目标地址传送邮件的规定,由它来管制函件的直达形式。这里咱们就须要用到这个库。其中 SMTP 反对 smtplib 和 Email 两个模块,其中 smtplib 负责发送邮件,email 负责构建邮件,SMTP 反对发送纯文本,携带附件和携带图片等性能。
1、首先导入 smtplib 模块和 email 模块中 MIMEText(示意文本)
2、筹备发送邮件所须要的参数(服务器,发送者账号,明码,和收件人账号)
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># 服务器地址
smtpserver = ‘smtp.163.com’ # 发送账号
user = ‘XXXXXXXX@163.com’ # 发送明码
password = ‘xxxxxxx’ # 收件人
receivers = ‘821006052@qq.com'</pre>
3、依据源码内容实现对参数对应填写
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># 邮件题目
subject = ‘python 发送邮件 ’ # 发送内容(文本内容,发送格局,编码格局)
message = MIMEText(‘Python 通过 smtplib 发送邮件。。。’, ‘html’, ‘utf-8’)
发送地址
message[‘From’] = user
承受地址
message[‘To’] = receivers
邮件题目
message[‘subject’] =subject</pre>
4、通过对 smtplib 模块对邮件进行发送
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”>smtp = smtplib.SMTP()
连贯服务器
smtp.connect(smtpserver)
登录邮箱账号
smtp.login(user,password)
发送账号信息
smtp.sendmail(user,receivers,message.as_string())
敞开
smtp.quit()</pre>
携带附件
咱们失常发送邮件的时候可能会携带一些附件,当然这个性能 python 也能够帮忙咱们实现,SMTP 中自带的有携带附件的模块。
1、导入 email 中的 MIMEMultipart 模块
2、筹备发送邮件的配置和参数
3、邮件携带的附件
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># coding:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart
服务器地址
smtpserver = ‘smtp.163.com’ # 发送账号
user = ‘xxxxxx@163.com’ # 发送明码
password = ‘xxxxx’ # 收件人
receivers = ‘821006052@qq.com’ # 邮件题目
subject = ‘python 发送携带附件邮件 ’ # 获取附件信息
with open(‘name.txt’,’rb’,)as f:
body = f.read().decode()
message = MIMEMultipart()
发送地址
message[‘From’] = user
承受地址
message[‘To’] = receivers
邮件题目
message[‘subject’] =subject
注释内容
body = MIMEText(body, ‘html’, ‘utf-8’)
message.attach(body)
传当前目录中的 name.txt 文件
att = MIMEText(open(‘name.txt’, ‘rb’).read(), ‘base64’, ‘utf-8’)
att[“Content-Type”] = ‘application/octet-stream’ # 死格局
filename 示意附件的名称
att[“Content-Disposition”] = ‘attachment; filename=”name.txt”‘ message.attach(att)
smtp = smtplib.SMTP()
连贯服务器
smtp.connect(smtpserver)
登录邮箱账号
smtp.login(user,password)
发送账号信息
smtp.sendmail(user,receivers,message.as_string())
敞开
smtp.quit()</pre>
如果想要增加多个附件的话持续从新传取附件内容,只须要更改不同的附件名称即可
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># 传当前目录中的 name.txt 文件
att = MIMEText(open(‘name.txt’, ‘rb’).read(), ‘base64’, ‘utf-8’)
att[“Content-Type”] = ‘application/octet-stream’ # 死格局
filename 示意附件的名称
att[“Content-Disposition”] = ‘attachment; filename=”name.txt”‘</pre>
邮件中增加图片
咱们失常发送邮件的时候能够增加图片,当然 python 发送一样能够帮忙咱们实现这个需要
1、增加图片,须要用到 email 中的 MIMEImage 模块
2、筹备发送邮件的配置和参数
3、邮件携带的附件
因为 html 中不能增加图片链接,因为会被认为是歹意链接,咱们能够通过在 html 写入图片 ID,通过 ID 进行匹配图片内容
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># 增加图片
img_body = ”’ <html>
<head>Python 发送携带图片信息 </head>
<body>
<p>
<p><img src=”cid:imageid”></p>
<p>
</body>
</html>
”’ # 注释内容
body = MIMEText(img_body, ‘html’, ‘utf-8’)
f = open(‘123.jpg’,’rb’)
mag = MIMEImage(f.read())
f.close()
定义图片 ID 在 HTML 中展现
mag.add_header(‘Content-ID’, ‘imageid’)
增加图片图片
message.attach(mag)
增加 body 内容
message.attach(body)</pre>
残缺代码:
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># coding:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage
服务器地址
smtpserver = ‘smtp.163.com’ # 发送账号
user = ‘xxxxx@163.com’ # 发送明码
password = ‘xxxxxxx’ # 收件人
receivers = ‘821006052@qq.com’ # 邮件题目
subject = ‘python 发送图片邮件 ’ message = MIMEMultipart()
增加图片
img_body = ”’ <html>
<head>Python 发送携带图片信息 </head>
<body>
<p>
<p><img src=”cid:imageid”></p>
<p>
</body>
</html>
”’ # 注释内容
body = MIMEText(img_body, ‘html’, ‘utf-8’)
f = open(‘123.jpg’,’rb’)
mag = MIMEImage(f.read())
f.close()
定义图片 ID 在 HTML 中展现
mag.add_header(‘Content-ID’, ‘imageid’)
增加图片信息
message.attach(mag)
增加注释
message.attach(body)
发送地址
message[‘From’] = user
承受地址
message[‘To’] = receivers
邮件题目
message[‘subject’] =subject
非 SSL 邮箱
smtp = smtplib.SMTP()
连贯服务器
smtp.connect(smtpserver)
登录邮箱账号
smtp.login(user,password)
发送账号信息
smtp.sendmail(user,receivers,message.as_string())
敞开
smtp.quit()</pre>
留神:下面的应用一些惯例的邮箱,如果你的发件邮箱有 SSL 认证的须要关上认证信息,比方 QQ 邮箱须要配置一些信息
QQ 邮箱举例:
1、进入 - 设置 – 账户 –POP3 服务内容,关上 POP3/SMTP 服务
2、开启后会给一个明码,这个明码就是咱们须要登录的明码,复制保留下来
3、下面的代码中须要更改服务器内容
<pre style=”margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;”># SSL 邮箱(QQ 邮箱)
smtp = smtplib.SMTP_SSL(smtpserver, 465)
登录邮箱账号
smtp.login(user,password)
发送账号信息
smtp.sendmail(user,receivers,message.as_string())
敞开
smtp.quit()</pre>
文末福利
点击支付 2020Python 材料合集,视频 & 电子书