乐趣区

关于python:Python模块学习-smtplib模块

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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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: &quot;Courier New&quot; !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 材料合集,视频 & 电子书

退出移动版