python发送邮件的模块_python Email 邮件发送模块
"""
AUTHOR: YOU
VERSION: V1.0.00
DESC: 邮件操作模块
INTRO: 使用简介
# 创建邮件对象
mail = MailSender('smtp.163.com', 465, '填写邮箱登录账号', '填写邮箱授权密码')
# 添加附件
mail.add_attachment('../attachment/py08tools-1.00.001.tar.gz')
mail.add_attachment('../attachment/a.jpg')
# 定义文本内容
msg = "
发送的测试邮件
"
# 发送邮件
mail.send('测试邮件', 'muwenbin@qikux.com', msg)
# 关闭
mail.close()
"""
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.header import Header
from email.utils import parseaddr, formataddr
from email import encoders
from logging import debug, info, warning, error, basicConfig, DEBUG
class MailSender(object):
"""邮件发送模块对象"""
# 发件人
_from = None
# 附件列表
_attachments = []
def __init__(self, smtp_server, port, email_user, email_password):
"""初始化服务器连接"""
# 初始化日志模块
basicConfig(level=DEBUG, format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 连接服务器
info("连接指定smtp服务器..{}".format(smtp_server))
self.smtp_server = SMTP_SSL(smtp_server, port)
info("服务器连接成功")
# 登录服务器
self.__login(email_user, email_password)
def __login(self, user, pwd):
"""使用指定的账号+密码连接服务器"""
debug("设置发件人信息")
self._from = user
info("开始使用指定账号{}密码{}登录服务器".format(user, pwd))
try:
self.smtp_server.login(user, pwd)
except:
info("服务器登录失败")
info("服务器登录成功")
def add_attachment(self, file):
"""
添加附件
:param filename: 添加附件的完整路径/相对路径
:return: None
"""
info("邮件中添加附件{}".format(file))
with open(file, 'rb') as f:
debug("封装附件对象")
attach = MIMEBase('application', 'octet-stream')
debug(attach)
attach.set_payload(f.read())
debug(attach)
attach.add_header('Content-Disposition', 'attachment', filename=('gbk', '', f.name))
debug("附件开始编码")
encoders.encode_base64(attach)
debug("编码完成")
self._attachments.append(attach)
info("附件{}添加完成".format(file))
def send(self, subject, to_addr, content):
"""
发送邮件
:param subject: 邮件标题
:param to_addr: 收件人列表
:param content: 邮件文本内容
:return:
"""
info("开始封装邮件")
msg = MIMEMultipart()
debug("开始添加文本邮件内容")
contents = MIMEText(content, "html", _charset='utf-8')
debug("开始设置邮件标题")
msg['Subject'] = subject
debug("开始设置发件人信息")
msg['From'] = self._from
debug("开始设置收件人信息")
msg['To'] = to_addr
info("添加附件....")
for att in self._attachments:
msg.attach(att)
info("添加文本内容")
msg.attach(contents)
try:
info("开始发送邮件")
self.smtp_server.sendmail(self._from, to_addr, msg.as_string())
info("邮件发送成功")
return True
except Exception as e:
info("邮件发送失败", e)
return False
def close(self):
self.smtp_server.quit()
info("邮件客户端退出")
python发送邮件的模块_python Email 邮件发送模块相关推荐
- 易语云模块-易语言邮件发送模块下载(含命令详解)
易语言支持库自带邮件发送命令,但是和现在的主流邮箱好像不能连接上,收件发件就更别提了. 于是易语云模块就横空出世了,如果您要开发e程序发送邮件的话,那么使用易语云模块就可以很轻松的搞定了. 点击此处进 ...
- android javamail获取邮件太多太慢_java 实现 email 邮件发送最简单优雅的方式(网易 163 为例)
如何使用IMAP服务? 首先介绍一些邮件发送的基础知识,如果你已经知道可以跳过. 直接到 Email 邮件发送实现的部分. IMAP是什么? IMAP,即Internet Message Access ...
- SpringBoot整合Email 邮件发送
文章目录 一.准备 二.邮件发送需要的配置 获取163邮箱授权码 获取QQ邮箱授权码 YML配置 三.代码编写 普通邮件发送 HTML邮件发送 含静态资源邮件发送 带附件邮件发送 SpringBoot ...
- Bella Email邮件发送模板
简介: Bella Email邮件发送模板是一款HTML5网站模板.aspku提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢. 下载地址: http://www.bytepan.com/X3 ...
- 基于FPGA实现uart串口模块(Verilog)--------发送模块及整合
基于FPGA实现uart串口模块(Verilog)--------发送模块及整合 当接收模块接收到数据后,需要重新发送形成回环验证模块正确性.思路和结束模块有一点点的小差异.接收模块最终输出的是一个并 ...
- python邮件模块_Python收发邮件模块,用,来,发送,接收
用Python来发送接收邮件模块 python实现发送和接收邮件功能主要用到poplib和smtplib模块. poplib用于接收邮件,而smtplib负责发送邮件. # -- coding :ut ...
- python是什么邮箱_python发邮件详解,smtplib和email模块详解
在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...
- python搭建邮件服务器地址_python 配置邮件发送服务器发送邮件
邮件发送脚本 #coding:utf-8 # #!/usr/bin/python import smtplib ,os from email.mime.text import MIMEText fro ...
- 转:python模块学习 ---- smtplib 邮件发送
2019独角兽企业重金招聘Python工程师标准>>> 在基于互联网的应用中,程序经常需要自动地发送电子邮件.如:一个网站的注册系统会在用户注册时发送一封邮件来确认注册:当用户忘记登 ...
- 【Python 应用篇】Email 邮件发送
一.简单邮件发送 '''程序描述: 该脚本程序,用于完成简单的邮件发送功能 从文本文件中,提取内容,并发送给指定邮箱 ''' '''作者 = xxxxx ''' '''日期 = 2022.05.10 ...
最新文章
- 2022-2028年中国麻纺织业投资分析及前景预测报告
- Smarty中的变量
- 面试用涉及到的jvm常见的面试题(一)
- jquery的全选和多选操作
- webshell提权教程linux,Linux下WEBSHELL提权
- 视频流传输协议RTP/RTCP/RTSP/HTTP的区别
- 2017.7.31 征途 失败总结
- index.php后有乱码后缀,phpExcel在线下wamp环境下,正常导出,同样的代码到线上Linux导出文件无法打开,修改文件后缀为.xls后乱码...
- [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k1
- matlab的图像滤波,Matlab实现图像滤波
- .net core 中使用httpclient下载文件
- Android实现百度离线地图+gps定位
- 给图片加水印最简单的方法
- Linux-2.6 open()打开文件涉及的内核处理和数据结构分析
- 【jvm】8-垃圾回收
- 基本软件开发模型:瀑布模型、V型模型、迭代模型、增量模型、螺旋模型、大爆炸模型、敏捷模型、原型模型、W模型 特点分析与总结
- netbackup如何手动获取主机ID证书。
- 【记忆中的CASIO】
- 这款App连夜被下架!
- php修改头像怎么做,PHP - 点击更换头像