第一种是最常见的,smtp发送

import smtplib
import sys
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import osdef sendEmail(mail_sender, to_list, sub, content, attach_list = [], _subtype="html"):"""使用smtp发送邮件:param mail_sender: 发件人:param to_list: 收件人列表,用,间隔:param sub: 主题:param content: 内容:param attach_list:附件:param _subtype: 读取内容用的方式,不传html的话改成plain:return:"""msg = MIMEMultipart()msg['subject'] = submsg['From'] = mail_sendermsg['To'] = to_listtry:msg.attach(MIMEText(content, _subtype,'utf-8')) #用html的方法是更方便于word文档作为内容发送,可以先讲word转换成html,然后写入其中s = smtplib.SMTP('123.com', 25)# s.login()s.starttls()if attach_list:for att_path in attach_list:path_arr = att_path.split(os.path.sep)file_name = path_arr[len(path_arr) - 1]att1 = MIMEText(open(att_path,'rb').read(), 'base64','utf-8')att1.add_header('Content-Disposition', 'attachment', filename=file_name) #用这个方法可以避免附件乱码msg.attach(att1)s.sendmail(mail_sender, to_list.split(u','), msg.as_string())s.close()print("999921||业务数据处理||邮件发送成功")return Trueexcept Exception as e:sys.stderr.write("999931||{}".format(traceback.format_exc(limit=None, chain=True)))sys.stderr.write("0001")return False

第二种是用outlook发送的,这个大家借鉴使用

import os
from time import sleep
import autoit as au
import win32com.clientclass OutlookUtills:def __init__(self):outlook = win32com.client.Dispatch("outlook.Application ")# outlook.Visible = Trueself.mail = outlook.CreateItem(0)self.mail.Display()def sendEmail(self, addressee, subiect, AttachmentsPath=[], body=None):"""若body为默认值None则自动粘贴剪切板中内容进行发送:param addressee: 收件人:param subiect: 主题:param AttachmentsPath: 附件名称:param body: 正文:return:"""self.mail. To = addresseeself.mail.subject = subiectif AttachmentsPath == []:print("该邮件无附件")else:for Attachments in AttachmentsPath:self.mail.Attachments.Add(Attachments)print("地址:{},附件添加成功!!")sleep(2)if body == None:self.mail.body = ""au.send('^v')print("正文已从剪切板拷贝")else:self.mail.body = bodyprint("正文由函数进行输入")sleep(1)self.mail.Send()if __name__ == '__main__':my_outlook = OutlookUtills()

第三种是正文需要用到表格的,我在这里给大家一个示例,具体表格怎么改自行发挥

import smtplib
from email.mime.text import MIMEText
from email.header import Headerclass Mail:def __init__(self):# 第三方 SMTP 服务self.mail_host = "smtp.qq.com"  # 填写邮箱服务器:这个是qq邮箱服务器,直接使用smtp.qq.comself.mail_pass = "ahlwsnkajalubeif"  # 填写在qq邮箱设置中获取的授权码self.sender = '1004983289@qq.com'  # 填写邮箱地址self.receivers = ['tianyi.zhang@kingstarfintech.com']  # 填写收件人的邮箱,QQ邮箱或者其他邮箱,可多个,中间用,隔开def send(self):self.mail_host = "smtp.qq.com"  # 填写邮箱服务器:这个是qq邮箱服务器,直接使用smtp.qq.comself.mail_pass = "ahlwsnkajalubeif"  # 填写在qq邮箱设置中获取的授权码self.sender = '1004983289@qq.com'  # 填写邮箱地址self.receivers = ['tianyi.zhang@kingstarfintech.com']  # 填写收件人的邮箱,QQ邮箱或者其他邮箱,可多个,中间用,隔开insert = "<tr><td>152371200010240002</td><td>潘金莲</td><td>tar</td><td>152371200010240002.tar</td><td>20220426-1545</td><td>否</td></tr><tr><td>152371200010240002</td><td>潘金莲</td><td>tar</td><td>152371200010240002.tar</td><td>20220426-1545</td><td>否</td></tr>"head = \"""<head><meta charset="utf-8"><STYLE TYPE="text/css" MEDIA=screen>table {border-collapse: collapse;border: 2px solid #a19da2;/*居中显示整个表格*/margin: auto;}table thead {border: 2px solid #91c6e1;background: #f1f1f1;padding: 10px 10px 10px 10px;color: #333333;}table tbody {border: 2px solid #91c6e1;padding: 10px 10px 10px 10px;}table tr {}table th {vertical-align: top;font-size: 14px;padding: 10px 10px 10px 10px;color: #105de3;font-family: arial;text-align: center;}table td {text-align: center;padding: 10px 10px 10px 10px;}body {font-family: 宋体;}h1 {color: #5db446}div.header h2 {color: #0002e3;font-family: 黑体;}div.content h2 {text-align: center;font-size: 28px;text-shadow: 2px 2px 1px #de4040;color: #fff;font-weight: bold;background-color: #008eb7;line-height: 1.5;margin: 20px 0;box-shadow: 10px 10px 5px #888888;border-radius: 5px;}h3 {font-size: 22px;background-color: rgba(0, 2, 227, 0.71);text-shadow: 2px 2px 1px #de4040;color: rgba(239, 241, 234, 0.99);line-height: 1.5;}h4 {color: #e10092;font-family: 楷体;font-size: 20px;text-align: center;}td img {/*width: 60px;*/max-width: 300px;max-height: 300px;}</STYLE></head>"""body = \"""<body><div align="center" class="header"><!--标题部分的信息--><h1 align="center">表格中的数据为当天云开户信息下载及CRM上传情况</h1></div><hr><div class="content"><!--正文内容--><h2> </h2><div><h4></h4><table border="1" cellpadding="0" cellspacing="0" width="1600" style="border-collapse: collapse;"><tbody><thead><tr><th>身份证号</th><th>姓名</th><th>文件类型</th><th>文件名</th><th>上传时间</th><th>是否上传成功</th></tr></thead><h2>掌厅不存在身份证不一致情况</h2></tbody></table></div><hr><p style="text-align: center"></p></div></body>""".format(insert)html_msg = "<html>" + head + body + "</html>"html_msg = html_msg.replace('\n', '').encode("utf-8")message = MIMEText(html_msg, 'html', 'utf-8')message['From'] = Header("小胖子xpp", 'utf-8')  #邮件发送者姓名message['To'] = Header("小胖子xpp", 'utf-8')    #邮件接收者姓名subject = '测试'  #发送的主题message['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP_SSL(self.mail_host, 465) #建立smtp连接,qq邮箱必须用ssl边接,因此边接465端口smtpObj.login(self.sender, self.mail_pass)  #登陆smtpObj.sendmail(self.sender, self.receivers, message.as_string())  #发送smtpObj.quit()print('发送成功!!')except smtplib.SMTPException as e:print('发送失败!!')if __name__ == '__main__':mail = Mail()mail.send()

python发送邮件的几种常用方法相关推荐

  1. python邮件发送哪个好_最全总结!聊聊 Python 发送邮件的几种方式

    1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本.富文本.HTML 等格式的邮件 本文将聊聊利用 Python ...

  2. python timer使用-Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  3. python 发送邮件的两种方式【终极篇】

    python 发送邮件的两种方式[终极篇] 一,利用python自带的库 smtplib简单高效 from email.mime.multipart import MIMEMultipart from ...

  4. 最全总结!聊聊 Python 发送邮件的几种方式

    1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例 ...

  5. python自动发邮件富文本_Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式...

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...

  6. python用pip安装_使用pip安装python库的几种常用方法

    使用pip安装python库的几种方式 1.使用pip在线安装 1.1 安装单个package 格式如下:pip install SomePackage 示例如下: 比如:pip install sc ...

  7. python定时器的使用方法_Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  8. 利用python发送邮件

    利用python发送邮件 使用outlook 使用Smtp 本文主要介绍python发送邮件的两种方式 使用outlook 该方式需要安装对应的包 命令如下 pip install pypiwin32 ...

  9. python电脑下载方法-python 获取机器snpython下载文件的几种常用方法

    python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下: 002pc.com从python 获取机器snpython下载文件的几种常用方法分析来看 ...

最新文章

  1. mssql 查询当前自增序号_查询函数Choose、Lookup、Hlookup、Vlookup应用技巧解读
  2. 【git】强制覆盖本地代码(与git远程仓库保持一致)
  3. leetcode115. 不同的子序列
  4. (16)Verilog HDL常量:数值表示
  5. 代码无错是优? 工厂模式
  6. Altium Designer(六):Make Library
  7. Linux用awk处理文本数据
  8. Java语言程序设计(基础篇)
  9. Word中插入三线格算法公式,放大不变形
  10. Google BBR是什么?以及在 CentOS 7 上如何部署
  11. 反汇编linux内核,如何反汇编linux固件内核
  12. Mac改变系统截图存储路径
  13. 防盗报警器c语言程序,(完整版)基于单片机的家庭防盗报警系统doc毕业论文
  14. linux系统 用优盘启动流程,制作u盘启动linux系统
  15. 【鸿蒙OS开发入门】13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解
  16. (面向对象)员工信息管理系统 1.当有新员工的时候将员工加入到管理系统 2.可以根据工号实现对该员工信息查询 3.可以现实查看所有员工信息 4.可以修改员工的薪水
  17. 迅雷百度网盘不能下载资源 办法总比困难多
  18. 全面屏虚拟键适配方案
  19. php7 fileinfo,PHP7.3开启fileinfo扩展
  20. Python文件和数据格式化(教程)

热门文章

  1. POI跨列合并单元格兼容性问题
  2. c++中string中find用法(快速入门)
  3. ios闪屏问题 vue_ios transition translate 闪屏问题总结
  4. 华为手机坏了数据怎么导出_手机视频怎么导出音频?
  5. 数据体系和专题分析实战
  6. PostgreSQL 全量 增量 归档 备份工具 pg_rman安装(一)
  7. Oracle RMAN不完全恢复遇到的RMAN-06556
  8. 给团队带来正能量,避免负能量的产生
  9. 容联云Q2营收2.74亿元,同比增长47.9%,业绩再超预期
  10. 群集的基本概念(了解即可)