python3发邮件_Python3 无痛发送邮件
使用第三方库 yagmail
更新: 第三种方式的隐藏用户名和密码的方式,目前不再支持
简单介绍
目标是尽可能简单,无痛地发送电子邮件。
最终的代码如下:
import yagmail
yag = yagmail.SMTP()
contents = ['This is the body, and here is just text http://somedomain/image.png',
'You can find an audio file attached.', '/local/path/song.mp3']
yag.send('to@someone.com', '邮件标题', contents)
或者在一行中实现:
yagmail.SMTP('mygmailusername').send('to@someone.com', 'subject', 'This is the body')
当然, 以上操作需要从你自己系统的密钥环中读取你的邮箱账户和对应的密码。关于密钥环稍后会提到如何实现。
安装模块
pip3 install yagmail # linux / Mac
pip install yagmail # windows
这样会安装最新的版本,并且会支持所有最新功能,主要是支持从密钥环中获取到邮箱的账户和密码。
关于账户和密码
开通自己邮箱的 SMTP 功能,并获取到授权码
这个账户是你要使用此邮箱发送邮件的账户,密码不是平时登录邮箱的密码,而是开通 POP3/SMTP 功能后设置的客户端授权密码。
这里以 126 邮箱为例:
image.png
image.png
image.png
方式一:不使用系统的密钥环
不使用系统的密钥环,可以直接暴露账户和密码在脚本里
import yagmail
yag = yagmail.SMTP(
user='自己的账号',
password='账号的授权码',
host='smtp.qq.com', # 邮局的 smtp 地址
port='端口号', # 邮局的 smtp 端口
smtp_ssl=False)
yag.send(to='收件箱账号',
subject='邮件主题',
contents='邮件内容')
方式二: 使用系统的密钥环管理账户和授权码
模块支持从当前系统环境中的密钥环中获取账户和密码,要想实现这个功能,需要依赖模块 keyring。之后把账户和密码注册到系统的密钥环中即可实现。
1. 安装依赖模块
pip3 install keyring
# CentOS7.3 还需要安装下面的模块
pip3 install keyrings.alt
2. 开始向密钥环注册
import yagmail
yagmail.register('你的账号', '你的授权密码')
注册账户和密码,只需要执行一次即可。
3. 发送邮件
import yagmail
yag = yagmail.SMTP('自己的账号',
host='smtp.qq.com', # 邮局的 smtp 地址
port='端口号', # 邮局的 smtp 端口
smtp_ssl=False # 不使用加密传输
)
yag.send(
to='收件箱账号',
subject='邮件主题',
contents='邮件内容')
示例展示
下面是以我的 126 邮箱为例, 使用系统密钥环的方式,向我的 163邮箱发送了一封邮件。
import yagmail
yag = yagmail.SMTP(user='shark@126.com',
host='smtp.126.com',
port=25,
smtp_ssl=False)
yag.send(to='docker@163.com',
subject='from shark',
contents='test')
这样就愉快的发送了一封测试邮件到 docker@163.com 的邮箱。
当然前提是:
126 邮箱开通了 SMTP功能。
把 126 邮箱的账号和密码已经注册到自己系统的密钥环中。
发送附件
发送
发送附件只需要给 send方法传递 attachments 关键字参数
比如我在系统的某一个目录下有一张图片,需要发送给 docker@163.com
import yagmail
yag = yagmail.SMTP(user='shark@126.com',
host='smtp.126.com',
port=25,
smtp_ssl=False)
yag.send(to='docker@163.com',
subject='from shark',
contents='test',
attachments='./松鼠.jpeg')
收到的邮件和附件
image.png
使用 ssl 发送加密邮件
要发送加密邮件,只需要把 smtp_ssl 关键字参数去掉即可,因为默认就是采用的加密方式 smtp_ssl=True。
不传递 stmp_ssl 关键字参数的同时,需要设置端口为邮箱服务提供商的加密端口,这里还是以 126 邮箱为例,端口是 465。
import yagmail
yag = yagmail.SMTP(user='shark@126.com',
host='smtp.126.com',
port=465)
yag.send(to='docker@163.com',
subject='from sharkyunops',
contents='test',
attachments='./松鼠.jpeg')
发送 带 html 标记语言的邮件内容
在实际的生产环境中,经常会发送邮件沟通相关事宜,往往会有表格之类的内容,但是又不想以附件的形式发送,就可以利用 html 标记语言的方式组织数据。
import yagmail
yag = yagmail.SMTP(user='shark@126.com',
host='smtp.126.com',
port=465)
html="""
姓名年龄
shak18西瓜甜28
"""
yag.send(to='docker@163.com',
subject='from sharkyunops',
contents=['test',html])
image.png
更多
如果不指定to参数,则发送给自己
如果to参数是一个列表,则将该邮件发送给列表中的所有用户
attachments 参数的值可以是列表,表示发送多个附件
python3发邮件_Python3 无痛发送邮件相关推荐
- python发邮件实例_python 发送邮件实例
文本形式发邮件 #!/usr/bin/env python3 #coding: utf-8 importsmtplib fromemail.mime.textimportMIMEText fromem ...
- php 发邮件失败,phpmailer发送邮件失败
IsSMTP(); // 使用SMTP方式发送$mail->Host = "smtp.qq.com"; // 您的企业邮局域名$mail->SMTPAuth = tru ...
- php 怎么发邮件,PHP 怎样发送邮件?
发送电子邮件是再平常不过的事了,但是你知道怎样利用PHP在程序中自动发送邮件吗?本节讲解使用 PHP 本身的函数发送邮件. PHP mail() 函数 PHP 使用 mail() 函数用于从脚本中发送 ...
- android studio发邮件功能,Android发送邮件的方法实例详解
本文实例讲述了Android发送邮件的方法.分享给大家供大家参考,具体如下: 在android手机中实现发送邮件的功能也是不可缺少的.如何实现它呢?下面以简单的例子进行说明. 程序如下: import ...
- 如何用matlab自动发邮件,用matlab发送邮件
这个还是有点用的,当我们的程序比较大,运行耗时,而我们又有其他事没法在电脑前候着.这个时候我们就可以将计算出来的结果发送到我们的邮箱上. matlab中的sendmail函数可以帮助我们实现这个功能 ...
- python发送邮件并返回提示_用python3的smtplib库发邮件一直返回无法发送邮件提示,是什么原因?...
按照网上python3发邮件的教程,在jupyter运行都返回发送失败提示,是缺少了什么环境吗? 代码应该没问题,不过还是贴出来: # import smtplib # from email.mime ...
- java 发邮件 乱码_JavaMail发送中文邮件乱码的解决 | 学步园
我们的程序经常会出现这样一个问题,在WinXp下测试是正常的,而到了服务器(Linux操作系统)上就出现这个问题. 1. 由于邮件我写的程序的邮件主题是写在配置文件(. properties)中 ...
- linux 发邮件给用户,Linux学习之给指定用户发邮件
发送邮件 进入 mail 程序后的操作都很简单,但是可以不进入 mail 的 & 操作提示符界面,下面举几个实用例子: 1.给 snailwarrior@qq.com 发信 [root@pps ...
- python发邮件详解_用Python3发送邮件详解
[整个邮件系统是怎样工作的] 邮件自互联网诞生之初就有了,它和web服务一样也是采用的c/s架构,比如我们常见的邮件客户端有outlook.foxmail这些邮件客户端软件. 当我们要发邮件时客户端就 ...
最新文章
- 2021-03-26习题4-7 最大公约数和最小公倍数 (15 分)
- 【吾日三省吾身】2015.6.03-涅槃行动第十六天
- 电子计算机信息工程都是做什么的,电子信息工程专业将来干什么 就业前景好不好...
- leetcode613. 直线上的最近距离(SQL)
- sublime 自定义快捷键
- android新建工程横屏,华为MatePad Pro构建的安卓平板横屏生态有何不同?来看看
- iOS音频播放 (一):概述 转
- bzoj 4401: 块的计数(结论)
- 隐秘攻击:恶意病毒可使智能手机加速老化
- 在腾讯云开通短信验证服务并完成群发消息测试
- 酷开u盘c02hb量产工具
- 自制卡牌游戏Python
- MSP430之仿真器驱动安装问题
- 第七周 项目四-队列数组
- IT界 PK 投资界,那些令人心驰神往的公司食堂
- docker搭建LNRP环境
- kube-controller-manager源码分析(三)之 Informer机制
- 安利一个截图神器——Sinpaste
- Nginx OpenResty Tengine到底改选哪个?
- 利用多 GPU 加速深度学习模型训练
热门文章
- 集成学习之 如何进行多样性增强
- 小孔成像实验探究的软件_用易拉罐制作小孔成像装置小实验做法教程
- 高德地图——定位 检索 导航全套
- 手动挡五个档位示意图_手动挡各个档位怎么使用 正确的操作方式大家要知道...
- 倍增算法入门 超详细解答+LCA+RMQ(ST表)+例题剖析
- dnf剑魂buff等级上限_DNF:半年前没人看得上,如今被开发成T0,这神话终于翻身了...
- js网页简繁体切换cookie记录状态
- 研发内部控制浅谈(一)(转)
- Android基础ConstrainLayout约束布局的介绍和使用
- “希希敬敬对”团队作业——敏捷冲刺4