"""

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 邮件发送模块相关推荐

  1. 易语云模块-易语言邮件发送模块下载(含命令详解)

    易语言支持库自带邮件发送命令,但是和现在的主流邮箱好像不能连接上,收件发件就更别提了. 于是易语云模块就横空出世了,如果您要开发e程序发送邮件的话,那么使用易语云模块就可以很轻松的搞定了. 点击此处进 ...

  2. android javamail获取邮件太多太慢_java 实现 email 邮件发送最简单优雅的方式(网易 163 为例)

    如何使用IMAP服务? 首先介绍一些邮件发送的基础知识,如果你已经知道可以跳过. 直接到 Email 邮件发送实现的部分. IMAP是什么? IMAP,即Internet Message Access ...

  3. SpringBoot整合Email 邮件发送

    文章目录 一.准备 二.邮件发送需要的配置 获取163邮箱授权码 获取QQ邮箱授权码 YML配置 三.代码编写 普通邮件发送 HTML邮件发送 含静态资源邮件发送 带附件邮件发送 SpringBoot ...

  4. Bella Email邮件发送模板

    简介: Bella Email邮件发送模板是一款HTML5网站模板.aspku提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢. 下载地址: http://www.bytepan.com/X3 ...

  5. 基于FPGA实现uart串口模块(Verilog)--------发送模块及整合

    基于FPGA实现uart串口模块(Verilog)--------发送模块及整合 当接收模块接收到数据后,需要重新发送形成回环验证模块正确性.思路和结束模块有一点点的小差异.接收模块最终输出的是一个并 ...

  6. python邮件模块_Python收发邮件模块,用,来,发送,接收

    用Python来发送接收邮件模块 python实现发送和接收邮件功能主要用到poplib和smtplib模块. poplib用于接收邮件,而smtplib负责发送邮件. # -- coding :ut ...

  7. python是什么邮箱_python发邮件详解,smtplib和email模块详解

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  8. python搭建邮件服务器地址_python 配置邮件发送服务器发送邮件

    邮件发送脚本 #coding:utf-8 # #!/usr/bin/python import smtplib ,os from email.mime.text import MIMEText fro ...

  9. 转:python模块学习 ---- smtplib 邮件发送

    2019独角兽企业重金招聘Python工程师标准>>> 在基于互联网的应用中,程序经常需要自动地发送电子邮件.如:一个网站的注册系统会在用户注册时发送一封邮件来确认注册:当用户忘记登 ...

  10. 【Python 应用篇】Email 邮件发送

    一.简单邮件发送 '''程序描述: 该脚本程序,用于完成简单的邮件发送功能 从文本文件中,提取内容,并发送给指定邮箱 ''' '''作者 = xxxxx ''' '''日期 = 2022.05.10 ...

最新文章

  1. 2022-2028年中国麻纺织业投资分析及前景预测报告
  2. Smarty中的变量
  3. 面试用涉及到的jvm常见的面试题(一)
  4. jquery的全选和多选操作
  5. webshell提权教程linux,Linux下WEBSHELL提权
  6. 视频流传输协议RTP/RTCP/RTSP/HTTP的区别
  7. 2017.7.31 征途 失败总结
  8. index.php后有乱码后缀,phpExcel在线下wamp环境下,正常导出,同样的代码到线上Linux导出文件无法打开,修改文件后缀为.xls后乱码...
  9. [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k1
  10. matlab的图像滤波,Matlab实现图像滤波
  11. .net core 中使用httpclient下载文件
  12. Android实现百度离线地图+gps定位
  13. 给图片加水印最简单的方法
  14. Linux-2.6 open()打开文件涉及的内核处理和数据结构分析
  15. 【jvm】8-垃圾回收
  16. 基本软件开发模型:瀑布模型、V型模型、迭代模型、增量模型、螺旋模型、大爆炸模型、敏捷模型、原型模型、W模型 特点分析与总结
  17. netbackup如何手动获取主机ID证书。
  18. 【记忆中的CASIO】
  19. 这款App连夜被下架!
  20. php修改头像怎么做,PHP - 点击更换头像

热门文章

  1. angular 表单操作
  2. python读取excel(xlrd)
  3. 揭开阿里P2P面纱:大数据是泡泡
  4. 关于 google 的 Percolator
  5. 14-08-08 考核试题总结~
  6. 面向对象闲话(一)——什么是对象
  7. java根据url下载文件
  8. BIO、NIO、AIO的简单个人理解,同步异步和阻塞非阻塞的简单理解
  9. 芯烨打印机api密钥php,CCXT中文开发手册
  10. 【转】js如何准确获取当前页面url网址信息