文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python如何实现邮件发送功能

2023-06-30 15:32

关注

本篇内容主要讲解“Python如何实现邮件发送功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现邮件发送功能”吧!

smtplib 与 email 模块 可以帮助我们正常的发送邮件; schedule 模块可以帮助我们定时发送邮件,比如工资邮件等需要固定时间发送的邮件

利用 python 发送普通邮件

认识发送邮件流程

这里简单描述下发邮件的过程

登录邮箱

书写邮件接受者的邮箱

书写邮件标题与内容(有的时候还需要添加附件)

发送邮件

认识邮件协议

什么是协议?

协议就是一种规则,其已经被底层网络封装好。无需关心它的具体规则是什么,直接使用上层工具即可。

比如发送邮件这个场景,当我们使用 smtp 协议发送邮件时。网络发现是 smtp 协议,它就知道这是一封要发送出去的邮件;同样 pop3 也是一样的,当网络发现这是 pop3 协议 就知道这是一封要接收的邮件。

smtplib 模块

smtplib 模块是 python 中 发送邮件的很重要的模块之一。

创建协议对象:

smptObj = smptlib.SMTP() 通过 smptlib.SMTP() 生成 smpt 协议对象

创建链接:

smptObj.connect(smpt服务器地址, 25) 通过 connect(服务器IP地址, 端口号),smpt服务默认端口号为 25

登录验证:

smptObj.login(mail_user, mail_password) 通过 login(mail_user, mail_password) 传入邮箱名称、登录密码,完成验证。(注意:部分邮箱服务器这里传入的是口令而不是登录密码[也叫做授权码],在邮箱的设置里面查看)

发送邮件:

smptObj.sendmail(sender, receivers, message) 通过 sendmail(sender, receivers, message) 传入发送者的邮箱、接收者的邮箱、邮件内容即可完成发送邮件的动作。

PS:这里可以看到 "接收者的邮箱是 'receivers' 复数" ,所以 "接收者邮箱" 是一个数组、列表,可以发送给多个人; 消息内容的 "message" 是消息对象的加密字符串

email 包

email包 有两个比较常用的函数:

函数名参数说明
MIMEText邮件内容、邮件类型、编码格式定义邮件发送内容的对象
Header各类信息、编码格式将各类信息定义成对象,比如标题等。

PS:上文提到的 ""message" 是消息对象的加密字符串" 就是通过 "MIMEText" 加密生成的

发送邮件小案例

代码示例如下:

# coding:utf-8import smtplibfrom email.mime.text import MIMETextfrom email.header import Header'''第三方的 smpt [脚本中涉及的邮箱地址都是假的,请使用自己的真实邮箱地址进行测试]'''mail_host = "smtp.sina.com"     # 设置邮箱服务器mail_user = "conan868242"       # 设置自己的邮箱mail_pass = "cb997b01a87232b2"  # 这里就是邮箱的口令,也就是授权码;不是密码。sender = "conan868242@sina.com"     # 定义发送者邮箱(其实就是自己)receivers = ["3241716373@qq.com"]   # 定义接受者邮箱(可以是多个接收者)message = MIMEText("这是一封测试邮件 O(∩_∩)O哈哈~", "plain", "utf-8")     # 定义邮件内容;"plain"是格式,表示是普通的文件内容message["From"] = Header(sender)                            # 在message内定义发送信息 --> 发送者message["Subject"] = Header("Python 测试邮件发送", "utf-8")   # 在message内定义发送信息的标题print("加密后的发送内容\n", message.as_string())      # 打印输出加密后的发送内容try:    # 捕获发送邮件的异常    smtpObj = smtplib.SMTP()             # 实例化 SMTP 协议对象    smtpObj.connect(mail_host, 25)       # 链接 SMTP 服务器    smtpObj.login(mail_user, mail_pass)  # 登录邮箱验证    smtpObj.sendmail(sender, receivers, message.as_string())    # 发送邮件; "message" 通过 "as_string()" 进行发送内容字符串的加密except smtplib.SMTPException as error:    print("error:{}".format(error))

PS:不要尝试用这个源码运行了,我已经将授权码改了。

运行结果如下:

Python如何实现邮件发送功能

Python如何实现邮件发送功能

到此,相信大家对“Python如何实现邮件发送功能”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯