Python基于SMTP发送邮件的方法

作者:honeymoose 时间:2021-07-17 23:42:46 

目录
  • 构建消息对象

  • 发送邮件

  • 要点

在很多时候,使用 Python 发送邮件可能没有办法使用邮件服务器提供的 API,因为不是所有的邮件服务商都会提供 API 供客户使用的。

通常使用邮件 API 的邮件发送服务都需要额外的收费。

因此我们再邮件测试发送的时候,可能需要的是 SMTP 邮件发送服务,通常这个服务是所有邮件服务商都会提供的。

要使用 SMTP 邮件发送服务,你需要有下面的信息才可以完成和测试:

  • SMTP 邮件服务器的地址,端口,登录用户名和登录用户密码

  • 发送和接收邮件的地址

  • 邮件的主题和正文

看起来是不是有点复杂,实际上,Python 提供了一个sendmail 的方法,这个方法在 smtplib 库中。

Python基于SMTP发送邮件的方法

简单来说按照下面的步骤来做就可以了。

构建消息对象

在 Python 中有一个库为 MIMEMultipart,我们可以使用这个来构建消息对象。

Python基于SMTP发送邮件的方法

要做的事情也比较简单,在定义 MIMEMultipart 对象后,你需要在这个对象中设置是谁发送的,发送给谁,主题是什么。

然后再在这个对象中插入正文,你可以插入 HTML 也可以插入纯文本。

为了让邮件比较美观,通常我们都会插入 HTML 的文本,很多时候为了插入更多的数据,我们还可能会用到模板。

发送邮件

在定义完成消息对象后,我们就可以发送邮件了。

在发送邮件之前,我们需要初始化 SMTP 对象,通常使用的是 smtplib.SMTP(smtpserver) 方法。

在这个方法中,我们会定义发送邮件服务器的地址和端口。

随后我们可能会调用一个 starttls 方法,这个方法是希望发送邮件服务器使用的是 TLS 模式。

随着技术的进步,和安全的考虑,很多邮件发送服务器都要求使用 TLS 模式来进行发送。

然后使用 server.login(email_user, email_passwd) 方法来登录服务器。

在上面的步骤完成后,我们就等于完成了你的 Python 代码和邮件服务器的通信了,你的代码在这个时候会拿到服务器的对象了,并且完成了对象的初始化了。

在这一步完成后就可以调用 sendmail 函数发送邮件。

当邮件发送完成后,不要忘记关闭邮件服务器的连接。


# Connect to the SMTP server
server = smtplib.SMTP(smtpserver)
server.starttls()
server.login(email_user, email_passwd)
sending_response = server.sendmail(from_addr, to_addr, message.as_string())
print(sending_response)
server.quit()

针对上面的发送服务,请参考下上面提供的伪代码。

完整的测试代码请参考 GitHub 上面的:python-tutorials/SendMailSMTP.py at master · cwiki-us-docs/python-tutorials · GitHub

要点

Python 发送邮件的服务还是比较简单的。

因为邮件发送服务都需要和第三方的邮件服务器进行通信,在这个通信的过程中,最重要的步骤就是先要获得邮件服务器的链接。

通常这个链接因为有防火墙,发送用户名限制,密码要求等等可能会导致连接获得失败而没有办法拿到连接服务器的对象。

针对遇到的情况具体问题具体分析就可以了。

遵循的原则步骤就是:

  1. 构建消息

  2. 获得服务器连接

  3. 发送邮件

  4. 关闭服务器连接

需要注意的是不要忘记关闭服务器连接。

来源:https://juejin.cn/post/6942987087457026056

标签:python,smtp,发送邮件
0
投稿

猜你喜欢

  • wxPython中listbox用法实例详解

    2022-03-13 15:19:54
  • 探索Python数据可视化库中Plotly Express的使用方法

    2022-10-29 13:45:31
  • python中class(object)的含义是什么以及用法

    2023-08-07 22:00:19
  • 动态提示的select下拉框

    2007-12-02 14:54:00
  • 关于pytorch中网络loss传播和参数更新的理解

    2023-08-06 05:29:09
  • Python3.6简单反射操作示例

    2021-05-04 03:32:05
  • Python中使用中文的方法

    2021-09-26 05:46:39
  • asp关键词屏蔽过滤函数代码

    2010-05-04 16:32:00
  • 《设计网事》前言

    2009-07-15 17:19:00
  • Mootools常用方法扩展(四)

    2009-02-21 11:12:00
  • windows、linux下打包Python3程序详细方法

    2023-09-30 22:06:53
  • PHP的mysqli_sqlstate()函数讲解

    2023-06-08 14:30:30
  • JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)

    2013-08-09 10:14:56
  • Python 相对路径报错:"No such file or directory"'原因及解决方法

    2021-08-12 05:34:00
  • 在Python中使用defaultdict初始化字典以及应用方法

    2021-01-05 02:03:02
  • python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

    2023-05-17 00:32:46
  • Python实现APP自动化发微信群消息的示例代码

    2023-07-27 05:24:26
  • php导出excel格式数据问题

    2023-07-13 22:46:06
  • Python基于numpy灵活定义神经网络结构的方法

    2023-09-30 15:03:52
  • Python中垃圾回收和del语句详解

    2023-12-20 01:02:55
  • asp之家 网络编程 m.aspxhome.com