[转帖]利用Python调用outlook自动发送邮件
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓

使用Python发送邮件有两种方式,一种是使用smtp调用邮箱的smtp服务器,另一种是直接调用程序直接发送邮件。而在outlook中我们一般是没有权限去开启smtp服务的,所以一般只能通过第二种直接调用方式发送邮件
基础版本–能自动发送就是成功
利用Python使用Outlook自动发送邮件,代码及注释如下:
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = '12345@qq.com' #收件人
mail.CC = '12345678@qq.com' # 抄送人
#mail.Bcc='12345678@qq.com' #密抄收件人
mail.Subject = 'test1' #邮件主题
mail.Body = '这是一封测试邮件' #邮件正文
mail.Importance = 2 #设置重要性为高
mail.Attachments.Add(r'C:\Users\Desktop\测试.xlsx') #添加附件
mail.Send() #发送
添加多个附件
如果需要添加多个附件,则直接使用多次的 .Attachments.Add即可
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = '12345@qq.com' #收件人
mail.Subject = 'test1' #邮件主题
mail.Body = '这是一封多附件测试邮件' #邮件正文
mail.Attachments.Add(r'C:\Users\Desktop\测试.xlsx') #添加附件
mail.Attachments.Add(r'C:\Users\Desktop\测试2.txt') #添加第二个附件
mail.Send() #发送
选择发送邮箱/账号
自动发送默认使用outlook中的默认邮箱,但是我们的outlook邮箱可能除了我们自己的邮箱账号外还有其他的账号,例如公共邮箱。只要设定一下.SentOnBehalfOfName即可:
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.SentOnBehalfOfName = 'accoumt2@outlook.com' #选择发送邮箱,只需要修改对应使用的邮箱/账号地址即可
mail.To = '12345@qq.com' #收件人
mail.Subject = 'test1' #邮件主题
mail.Body = '这是一封测试邮件' #邮件正文
mail.Send() #发送
修改正文格式
如果需要修改正文中的字体,则需要在正文中使用HTML格式调整,代码示例如下:
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = '201304056@qq.com' #收件人
mail.Subject = 'test' #邮件主题
mail.Body = '这是一封测试邮件' #邮件正文
mail.BodyFormat = 2 # 2表示使用Html format,可以调整格式等
mail.HTMLBody = '''<H2>致尊敬的收件人</H2><BR>
<FONT SIZE=4>请注意<BR>
这是一封<Font Face=Times Roman Size=4.5 Color=blue>测试邮件</font>并且<Font Face=Times Roman Size=4.5 Color=red>没有附件</font>。<BR>'''
mail.Display() #显示发送邮件界面
mail.Send() #发送
其中正文中的HTML标签含义如下:
<H2> </H2>标签: 在Html语句中<h1> - <h6> 标签可定义标题。<h1> 定义最大的标题。<h6> 定义最小的标题。
<br> 标签:插入一个换行符
<font>标签: 规定文本的字体、字体尺寸、字体颜色。例如示例中的<Font Face=Times Roman Size=4.5 Color=blue>
其他格式,例如加粗,斜体等都可以使用特定的HTML标签实现,具体百度即可。
插入图片
如果需要在正文中插入图片的话则需要先插入图片附件,然后利用HTML将图片插入到正文中
import win32com.client as win32
outlook = win32.Dispatch('Outlook.Application')
mail = outlook.CreateItem(0)
mail.To = '12345@qq.com'
mail.Subject ='test'
mail.BodyFormat = 2
mail.Attachments.Add(r"C:\Users\测试.jpg") # 先把要插入的图片当作一个附件添加
mail.Attachments.Add(r"C:\Users\测试表格.xlsx") # 添加正常的附件
mail.HtmlBody = "<div><img src='测试.jpg' /></div>" # 然后在htmlbody里面调用这个图片,就可以进入到正文里面了
mail.Display()
mail.Send()
[转帖]利用Python调用outlook自动发送邮件的更多相关文章
- C#调用Outlook来发送邮件
原文:C#调用Outlook来发送邮件 写了一个简单的Windows Form程序,实现利用Outlook来发送电子邮件的功能.下面逐步讲解如何实现,再加上具体的代码. 打开VS2010, 新建一个W ...
- VBA控制outlook自动发送邮件(转)
使用Excel VBA实现Outlook自动发送邮件 | 在工作上我们都会遇到批量发送邮件的情况,面对重复而规律性的工作,可以使用Excel的VBA实现自动批量化发送邮件.大大减小工作时间,提升工作效 ...
- .net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件
.net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件 源码可以在我的资源列表中下载: MPOEMail http://download.csdn.net/my VS2012 ...
- Python调用Outlook发邮件
调用Outlook发送邮件 需安装pypiwin32模块:pip install pypiwin32 1. 发送普通邮件 import win32com.client as win32 outlook ...
- 使用python调用email模块发送邮件附件
使用python调用email模块实现附件发送 需要模块: import datetime import time import sys import mimetypes import smtplib ...
- 利用Python调用pastebin.com API自动创建paste
在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste 登录之后,进入API页面,发现网站已经提供了几个API ...
- Python 调用outlook发送邮件(转 )
单账号: import win32com.client as win32 def send_mail(): outlook = win32.Dispatch('Outlook.Application' ...
- Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口
WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...
- 批量群发,营销必备!Python代码实现自动发送邮件!
在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件方法 SMTP是发送邮件的协议, ...
- 利用Python实现App自动签到领取积分
要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化.但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了. 有需要Python学习资料的小伙伴吗?小编整理[ ...
随机推荐
- 微短剧市场暴涨267.65%,用微短剧场景AUI Kit精巧入局
微短剧,不仅上头,更要上心. 微短剧,深度"拿捏"了这个碎片化时代,也是刚过去的2023年绕不开的热词. 与传统影视剧制作精益求精.耗时长相反,门槛与耗时"双低" ...
- 一些JavaSE学习过程中的思路整理(二)(主观性强,持续更新中...)
目录 一些JavaSE学习过程中的思路整理(二)(主观性强,持续更新中...) 将一个子类的引用对象赋值给超类的对象(多态) 抽象方法和抽象类 简单概括以下包装器类的作用 面向接口编程时的一些细节 f ...
- 一文详解什么是可解释AI
摘要:本文带来什么是可解释AI,如何使用可解释AI能力来更好理解图片分类模型的预测结果,获取作为分类预测依据的关键特征区域,从而判断得到分类结果的合理性和正确性,加速模型调优. 1. 为什么需要可解释 ...
- MySQL事务处理特性的实现原理
摘要:事务这个词来自于英语中的transactional这个词的翻译,这个词的含义更多的是指 "交易".在数据库系统或者软件系统中我们通常 称 transactional 为事务 ...
- 解读革命性容器集群CCE Turbo:计算、网络、调度全方位加速
摘要:CCE Turbo是华为云推出的一款革命性容器集群. 5月31日,在华为云Techwave云基础设施技术专题日上,华为云容器批量计算首席架构师马达对CCE Turbo的技术内幕进行了深度解读,C ...
- 云图说|华为HiLens云上管理平台 花样管理多种端侧设备
摘要:华为HiLens作为端云协同多模态AI开发应用平台,支持对接和管理多种端侧计算设备,帮助用户开发多模态AI应用并下发到端侧设备,实现多场景的智能化解决方案. 本文分享自华为云社区<[云图说 ...
- 传统数据库改造难?华为云GaussDB“五心”解决
摘要:快来看看华为云GaussDB奉上的"五心"诚意吧~ 本文分享自华为云社区<传统数据库改造难?华为云GaussDB"五心"解决>,作者: Gau ...
- vue2升级vue3:Vue Router报错,directly inside <transition> or <keep-a
vue3 报这个错误: vue-router.mjs:35 [Vue Router warn]: <router-view> can no longer be used directly ...
- mysql新增数据库新增用户并授权用户
-- 创建数据库CREATE DATABASE baseName; -- 创建用户CREATE USER 'userName' @ '访问限制' IDENTIFIED BY 'password'; ...
- 克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线
前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段. 但是对于熟悉 ClickHouse 的工程师而言,听到"扩容"二字一定会头疼 ...