Linux之python发送邮件

Linux之python发送邮件python发送邮件

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

0 背景

在服务器端开发时,会遇到通过邮件发送报警或结果的情形,本文对使用 python 发送附件的方法做一个总结,用到的库是 smtp 和 email 两个基础库

  • smtplib:发送邮件(连接邮箱服务器、登陆邮箱、发送邮件)
  • email:构造邮件内容(发件人、收件人、主题、正文、附件等)

测试环境: ubuntu18.04

1 安装方法

pip install py-email

Jetbrains全家桶1年46,售后保障稳定

安装好之后,即可正常导入相关的库

2 邮箱配置

使用 qq 邮箱服务器发送邮件时,需要开启 SMTP 服务,并获取相关授权码,进入邮箱首页,找到 “设置” — “账户” — “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”

Linux之python发送邮件

 开启 SMTP 服务,并获得授权码

Linux之python发送邮件

 一个类似于下边的码

Linux之python发送邮件

 至此邮箱配置完成

3 测试

import smtplib
# 发送字符串的邮件
from email.mime.text import MIMEText
# 需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart

# 设置服务器所需信息
fromEmailAddr = 'zongxp@qq.com'  # 邮件发送方邮箱地址
password = 'ialcztsjdxus****'  # (注意不是邮箱密码,而是为授权码)
toEmailAddrs = ['zongxp@jxresearch.com']  # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发

# 设置email信息
# ---------------------------发送带附件邮件-----------------------------
# 邮件内容设置
message =  MIMEMultipart()
# 邮件主题
message['Subject'] = 'python test email'
# 发送方信息
message['From'] = fromEmailAddr
# 接受方信息
message['To'] = toEmailAddrs[0]
# 邮件正文内容
message.attach(MIMEText('hello,test Python send Email', 'plain', 'utf-8'))

# 构造附件
att1 = MIMEText(open('/media/nvidia/jiaxun/20220214.zip', 'rb').read(), 'base64', 'utf-8')
att1['Content-type'] = 'application/octet-stream'
att1['Content-Disposition'] = 'attachment; filename="20220214.zip"'
message.attach(att1)
# ---------------------------------------------------------------------

# 登录并发送邮件
try:
    server = smtplib.SMTP('smtp.qq.com')  # qq邮箱服务器地址,端口默认为25
    server.login(fromEmailAddr, password)
    server.sendmail(fromEmailAddr, toEmailAddrs, message.as_string())
    print('success')
    server.quit()
except smtplib.SMTPException as e:
    print("error:", e)

参考 

python – 如何更改服务器上的最大邮件大小限制? – IT工具网

Python SMTP发送邮件 | 菜鸟教程

python 发送邮件带附件(txt、图片、excel、压缩包等)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231720.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月13日 上午9:22
下一篇 2025年6月13日 上午10:01


相关推荐

  • 获取C/C++字符串、字符数组长度

    获取C/C++字符串、字符数组长度在 C C 中常用的获取字符串长度或者字符串数组长度的函数有 sizeof length strlen size 其中 strlen str 和 str length 和 str size 都可以用来求字符串的长度 str length 和 str size 是用于求 string 类对象的成员函数 strlen str 是用于求字符串数组的长度 其参数是 cha

    2026年3月20日
    2
  • CSS改变鼠标样式(图片)

    CSS改变鼠标样式(图片)下面就来介绍下步骤方法:首页把鼠标图标格式转换成.ico格式,大小为32*32转换格式网址为:https://www.easyicon.net/covert/然后在CSS样式中增加代码:*{cursor:url(../images/shubiao.ico),auto;}大功告成啦~~~说明:图片大小最好是32*32的大小Css中的cursor属性不仅仅需…

    2022年5月31日
    37
  • ONF组织的SDN架构文档——四个架构(三/一)

    ONF组织的SDN架构文档——四个架构(三/一)5 控制功能和交互行为在协调 coordination 功能的辅助下 控制 control 功能是 SDN 的核心 集中讨论这些内容 同样也是以迭代的方式 这部分另外增加了详细的层次 来介绍了 4 单元所引入的原则和组件 总结协调 管理 功能和控制功能的区别如下 协调功能执行与向客户分配资源相关的功能 以及根据策略界定这些资源 这些功能出现在单个信任域中 当一个资源被分配到客户 资源就有效

    2026年3月18日
    1
  • 免费申请国外免费域名超详细教程[通俗易懂]

    免费申请国外免费域名超详细教程[通俗易懂]1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    77
  • maven的groupid是什么(maven parent标签)

    GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

    2022年4月17日
    210
  • (十五)红外通信

    (十五)红外通信本节我们主要是讲解有关于红外通信的内容 我们通过我们的一个红外发射器 就像一个遥控器一样的东西 向连接了红外接收器的 51 单片机发射一个红外信号 红外接收器接收到了信号之后在我们的数码管上显示出来我们发射的具体的按键值 关于红外光 人类能看到的光从长到短排列依次就是彩虹七色 红 橙 黄 绿 青 蓝 紫 其中红光的波长范围为 0 62 0 76um 紫光的波长范围为 0 38 046um 比紫光波长还短的光叫紫外线 比红光波长长的光叫红外线 红外线遥控就是利用波长为 0 76u

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号