版权声明:原创不易,本文禁止抄袭、转载需附上链接,侵权必究!
一、邮箱知识点简介
邮箱是传输信息方式之一,个人,企业等都在使用,朋友之间发消息,注册/登录信息验证,订阅邮箱,企业招聘,向客户发送消息等都是邮箱的使用场景;邮箱有两个较重要的协议:SMTP和POP3,均位于OSI7层模型和TCP/IP5层模型的应用层,SMTP用于发邮件,默认端口是25,其他端口有465,994等,POP3用于收邮件,默认端口是110,其他端口有995等。
二、常见邮箱开启SMTP服务
2.1 QQ邮箱
QQ邮箱注册/登录入口
3、找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,并选择开启POP3/SMTP服务
4、验证密保
5、验证通过后将会获取授权码,请牢记此授权码,点击确认后将无法再次查看
6、QQ邮箱SMTP服务器地址:smtp.qq.com
2.2 163邮箱
163邮箱注册/登录入口
1、登录163邮箱,点击左上角设置,选择POP3/SMTP/IMAP
2、开启POP3/SMTP服务
3、安全认证
4、验证通过后将会获取授权码牢记此授权码,点击确认后将无法再次查看
5、服务器地址:一般位于开启POP3/SMTP/IMAP页面的底部
2.3 阿里云邮箱(企业版)
阿里云企业邮箱由所在企业开通,不像QQ邮箱和163有授权码,直接在配置文件中填入阿里云企业邮箱账号和密码即可“
阿里云企业邮箱SMTP服务器相关配置信息如下:
2.4 Gmail邮箱
Gmail邮箱是Google邮箱,需要使用VPN或代理服务器软件方可访问注册,有需要的可去看相关教程
三、Python编写邮箱引擎
此篇邮箱脚本引擎采用Python3自带的标准库,分别是smtplib,email,logging,os
初始化邮箱引擎属性,包括日志,服务器主机,端口,发件人邮箱,发件人邮箱密码,收件人邮箱,邮箱内容:
def __init__(self, log, host, port, user, password, sender, receiver):
self.log = log
self.host = host
self.port = port
self.user = user
self.password = password
self.sender = sender
self.receiver = receiver
self.msg = MIMEMultipart()
3.1 编写文本内容方法
对发送文本内容进行utf-8编码:
def text_coding(self, text):
new_text = MIMEText(text, 'plain', 'utf-8')
self.msg.attach(new_text)
3.2 编写表格内容方法
1、当表格只是单列表格,可根据需求调用该方法,部分代码如下:
def get_column(self, title, table_content):
for value in table_content:
html = '%s %s %s %s' % (html, "<li>", value, "</li>")
形参title是字符转类型,可以看成表格的标题,形参table_content是由字符串组成的列表,可以看成除了标题行之外表格的表格内容
2、当表格是多列表格,可根据需求调用该方法,部分代码如下:
def get_columns(self, title, table_content):
for value in table_content:
for key in value:
html = '%s %s %s %s%s %s' % (html, "<li>", key, ":", value[key], "</li>")
形参title是字符转类型,可以看成表格的标题,形参table_content是由字符串组成的列表,可以看成除了标题行之外表格的表格内容
3、当表格需要调整最佳字符宽度时,可调用该方法,部分代码如下:
def get_table(self, title, content, good_len):
for i in range(len(content)):
content = content[i]
# 第一行执行
if i == 0:
html_table = '%s %s' % (html_table, "<tr bgcolor='#70db93'>")
if str_len:
for key in content:
html_table = '%s %s %s %s' % (
html_table, "<td word-wrap='break-word' width=%s>" % (key_len), key, "</td>")
html_table = '%s %s %s %s' % (
html_table, "<td word-wrap='break-word' width=%s>" % (val_len), content[key], "</td>")
continue
该方法是前面两种方法的进化版,根据需求调用
4、当需要写入各列的字段时可调用该方法,部分代码如下:
def table_content(self, title, list_field, list_cols):
# 此处没有实际作用,炫一下列表解析式
list_rows = [[row[i] for row in list_cols] for i in range(len(list_cols[0]))]
# 将字段行插入到二维列表的第一行
list_rows.insert(0, list_field)
list_table = list_rows
# 开始构造表格内容
………………
title是字符转类型,可以看成表格的标题,list_field是一维列表/数组,list_cols是二维列表/数组
3.3 编写图片内容方法
邮件信息中包含图片,部分代码如下:
def image_content(self, filename):
image = MIMEImage(open(filename, 'rb').read())
# 这是邮箱打包图片特定的发送头
image.add_header('Content-ID', '<image1>')
self.msg.attach(image)
3.4 编写附件上传方法
邮件信息中包含附件,部分代码如下:
def zip_content(self, filename):
basename = os.path.basename(filename)
attachment = MIMEText(open(filename, 'rb').read(), 'base64', 'utf-8')
# 这是邮箱打包附件特定的发送头
attachment["Content-Type"] = 'application/octet-stream'
3.5 编写html内容方法
当邮件需要使用html格式时,可调用该方法,代码如下:
def html_coding(self, html):
html_content = MIMEText(html, 'html', 'utf-8')
self.msg.attach(html_content)
3.6 编写邮件发送方法
发送邮件可调用该方法,部分代码如下:
def send_email(self):
"""发送邮件"""
smtp = smtplib.SMTP()
smtp.connect(self.host, int(self.port))
smtp.set_debuglevel(1)
smtp.login(self.user, self.password)
#发送邮件
………………
3.7 编写邮件头方法
配置邮件头信息,包括邮件主题、收件人等,部分代码如下:
def write_header(self, receiver, subject):
self.msg['subject'] = Header(subject, 'utf-8').encode()
self.msg['from'] = self.sender
3.8 其他工具方法
1、递推的求表格每行的最大长度:
def max_len(self, list_content):
pass
3.8 测试用例
if __name__ == '__main__':
ee = EmailEngine(log, 'host'),
'port'),
'user'),
'password'),
'sender'),
'receiver'))
receiver = 'receiver'
subject = 'Happy every day!'
ee.write_header(receiver, subject)
msg = []
msg.append('我亲爱的xxx:')
msg.append('时间的流逝也挡不住………………')
msg.append('我每天幻想着和你一起xxx')
msg.append('缘尽缘灭……………………')
ee.text_coding('\n'.join(msg))
ee.send_email()
四、邮箱引擎完整源码下载
完整源码点我下载
文章来源:https://www.toymoban.com/news/detail-458367.html
五、作者Info
Author:小鸿的摸鱼日常,Goal:让编程更有趣!
专注于算法、爬虫,网站,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!
版权说明:本文禁止抄袭、转载 ,侵权必究!文章来源地址https://www.toymoban.com/news/detail-458367.html
到了这里,关于手把手教你用Python编写邮箱脚本引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!