Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python SMTP 发送邮件方法

Python SMTP 发送邮件方法

原创
作者头像
HoneyMoose
修改于 2021-03-24 02:43:45
修改于 2021-03-24 02:43:45
1.4K00
代码可运行
举报
文章被收录于专栏:CWIKIUSCWIKIUS
运行总次数:0
代码可运行

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

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

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

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

  • SMTP 邮件服务器的地址,端口,登录用户名和登录用户密码
  • 发送和接收邮件的地址
  • 邮件的主题和正文

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

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

构建消息对象

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

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

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

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

发送邮件

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

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

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

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    # 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://www.ossez.com/t/python-smtp/13403

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
100天精通Python丨办公效率篇 —— 11、Python自动化操作 Email(发送邮件、收邮件、邮箱客户端)
首先,你要掌握以SMTP协议为基础的发送邮件方法。这个非常简单,只需要在Python中使用smtplib包,调用其中的SMTP()函数方法建立邮件连接,便可以轻松地发送邮件。
不吃西红柿
2023/04/21
1.7K0
邮箱伪造之搭建匿名SMTP服务器
电子邮件欺骗(email spoofing)的根本原因是SMTP协议是不需要身份验证的,攻击者可以利用这个特性伪造电子邮件头,从任意电子邮件地址发送任何人,导致信息看起来来源于某个人或某个地方,而实际却不是真实的源地址。
Bypass
2020/05/17
7.8K0
使用Python快速监控网站状态
群里有朋友问怎么样监控自己的网站运行情况,我这里把我用的分享给大家,使用Python运行哦。
青阳
2021/08/23
1.7K0
利用Python进行远程关电脑
import os import time import poplib import email import smtplib from email.header import decode_header from email.mime.text import MIMEText from email.header import Header # 读取Email,获取Email主题 def getEmailSubject(): read = poplib.POP3('pop.163.com')
Aidol
2020/07/23
6640
Python 测试 SMTP 服务
SMTP 服务用于转发邮件,本文记录 Python 测试SMTP的方法。 SMTP SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 核心语法 创建 SMTP 对象 语法如下: import smtplib smtpObj = smtplib.SMTP( [host [, po
为为为什么
2022/08/06
1.4K0
Python 测试 SMTP 服务
简单三步,用 Python 发邮件
0. 前言 发送电子邮件是个很常见的开发需求。比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了,就可以发个邮件到邮箱来提醒自己。 使用 Python 脚本发送邮件并不复杂。不过在网页上搜了些教程,都亲测无效,发现或多或少有点问题,导致发送失败。所以今天我们就来讲讲如何使用 Python 发送邮件。 本文主要内容包括,了解发邮件的思路,发送邮件需要的一些设置,发送一封简单的邮件,发送一封包含附件的邮件,在写代码过程中我们需要注意哪些问题等等。(完整参考代码地址见文末) 1. 思
Crossin先生
2018/04/17
1.2K0
简单三步,用 Python 发邮件
自动化邮件发送
有一次,小明需要给公司所有同事发送一封感谢邮件,他编写了一个Python脚本,一键实现批量发送邮件,省时又高效!
唯一Chat
2023/09/21
1820
python发送邮件
要先在对应的邮箱服务器中开通stmp服务,然后再说上述代码中配置成相应的内容,就可以发送邮件了
会呼吸的Coder
2020/02/17
9240
python3实现邮件的发送
使用的email和smtplib模块,这里简单介绍下smtplib.SMTP()类
dogfei
2020/07/31
3770
python3 SMTP发送邮件
最近看了一个资料关于用python来实现SMTP发送邮件,觉得挺有意思就实践了一下。先简单介绍一下吧
行云博客
2022/05/10
6250
QQ 邮箱使用 SMTP 发送邮件报错:550 The From header is missing or invalid
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/04/12
8490
QQ 邮箱使用 SMTP 发送邮件报错:550 The From header is missing or invalid
python邮件自动发送测试报告,看这篇文章就够了
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100698.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
4900
python邮件自动发送测试报告,看这篇文章就够了
电子邮件实现详解(下)
书接上回,上篇中主要介绍了电子邮件协议格式等理论相关内容,这篇中我们从JavaMail、Python的smtplib以及Django的django.core.mail模块三个视角来实现发送邮件这件事。
才浅Coding攻略
2022/12/12
2K0
电子邮件实现详解(下)
python SMTP邮件发送
本例使用的时python2.7环境,python3的操作应该也是差不多的。 需要用到smtplib和email两个包。
py3study
2020/01/16
1.8K0
【python】用SMTP模块发送带附件
在书上看了用SMTP模块发邮件,试过之后发现并没有什么用。163邮箱开启了SMTP服务后,登陆了发送的时候却被拒收了。
py3study
2020/01/19
5770
Python发送邮件的例子
import smtplib from email.mime.text import MIMEText from email.header import Header # 第三方 SMTP 服务 mail_host="smtp.qq.com" #设置服务器 mail_user="12121212@qq.com" #用户名 mail_pass="1223333" #口令 sender = '121212@qq.com' receivers = ['xi121@qq.com'] # 接收邮件
py3study
2020/01/15
4800
实现定时任务
编辑 crontest.cron 文件,修改为 5,10,15,20,25,30,35,40,45,50,55,59 * * * * python hello.py >> ~/1.txt开始执行定时任务 (注意crontest.cron 文件路径和自己的一致):
算法与编程之美
2023/08/22
2130
实现定时任务
python模块:smtplib模块
格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])
py3study
2020/01/10
1.5K0
Python发送邮件
Python发邮件需要有SMTP服务,可以在本地搭建SMTP服务,也可以使用第三方的SMTP服务(比如网易邮箱或QQ邮箱)。 这里我使用了网易126邮箱来发邮件。
海天一树
2018/07/25
1.5K0
Python发送邮件
Python3实现自动发送邮件
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
用户9925864
2022/07/27
3310
Python3实现自动发送邮件
相关推荐
100天精通Python丨办公效率篇 —— 11、Python自动化操作 Email(发送邮件、收邮件、邮箱客户端)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验