python实现基于smtp发送邮件
【前言】
在某些项目中,我们需要实现发送邮件的功能,比如:
- 爬虫结束后,发送邮件通知
- 定时发送邮件提醒待办事项
- 某项业务逻辑触发邮件通知
今天我们就分享如何基于smtp借助163邮箱来发送邮件
【实现过程】
163邮箱配置
首先登录163邮箱进行配置(没有请先注册):https://email.163.com/
配置SMTP服务开启(需要发送短信验证码进行开通)

开始编写脚本
新建 email_163.py python脚本
添加 smtp 模块
import smtplib
from email.mime.text import MIMEText
编写代码实现
from datetime import datetime
import smtplib
from email.mime.text import MIMEText
from config import settings as st
def send_mail_plain(receivers, subject, content):
#163邮箱服务器地址
mail_host = 'smtp.163.com'
#163用户名
mail_user = st.mail_user_163
#密码(部分邮箱为授权码)
mail_pass = st.mail_password_163
#邮件发送方邮箱地址
sender = st.mail_sender_163
#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers = receivers
#邮件内容设置
message = MIMEText(content, 'plain', 'utf-8')
#邮件主题
message['Subject'] = subject
#发送方信息
message['From'] = sender
#接收方信息
message['To'] = receivers[0]
#登录并发送邮件
smtpObj = smtplib.SMTP()
#连接到服务器
smtpObj.connect(mail_host, 25)
#登录到服务器
smtpObj.login(mail_user, mail_pass)
#发送
smtpObj.sendmail(sender, receivers, message.as_string())
#退出
smtpObj.quit()
if __name__ == '__main__':
receivers = ['xxxxx@qq.com']
subject = 'SevenTiny通知'
content = f'这是邮件主体内容!发送时间:{datetime.now()}'
send_mail_plain(receivers, subject, content)
print('Sent successfully!')
说明:
因为我这里用了配置文件的方式填充账号密码,这样可以避免在项目中硬编码账号密码,降低泄露风险
如果需要了解配置文件的方式,请参考:https://www.cnblogs.com/7tiny/p/16211724.html
我们需要配置如下几个关键参数:
- 163用户名
mail_user = "xxxxx@163.com" - 密码(部分邮箱为授权码)
mail_pass = "开通smtp服务时,163邮箱设置弹出的授权码(只会弹出一次,如果忘记重新配置)" - 邮件发送方邮箱地址
sender = "xxxxx@163.com"
然后填写接收邮箱,主题,内容即可(这部分参考代码参数传递即可,非常简单)
【测试】
我们运行脚本,可以看到收到发送成功的日志

我们打开163邮箱查看已发送邮箱,可以已发送邮箱中有我们刚才发送的邮件

打开接收方qq邮箱(也可以是其他邮箱)查看是否正确收到邮件

可以看到我们已经正确收到了刚才发送的邮件!
【总结】
我们已经通过 python smtp 模块借助163邮箱实现简单的邮件发送,如果是自建邮箱服务器,需要自行将163邮箱服务器地址替换成自己邮箱服务器地址:mail_host = 'smtp.163.com'
注意:163服务器作为发送方,每天有50封邮件上限! 如果超出数量会发送失败。
【源码地址】
https://github.com/sevenTiny/CodeArts/blob/master/Python/Mail/email_163.py
python实现基于smtp发送邮件的更多相关文章
- python学习(21) smtp发送邮件
原文链接: https://www.jianshu.com/p/369ec15bfe22 本文介绍python发送邮件模块smtplib以及相关MIME模块.smtplib用于生成邮件发送的代理,发送 ...
- python基于SMTP发送邮件
import smtplib from email.header import Header from email.mime.text import MIMEText ''' SMTP是发送邮件的协议 ...
- python开发基于SMTP协议的邮件代发服务
写在这篇文章前照例给大家灌输点名词解释,理论知识,当然已经很熟悉的同学可以往下翻直接看干货 1. 什么是SMTP SMTP即简单传输协议(Simple Mail Transfer Protocol), ...
- Python中使用SMTP发送邮件以及POP收取邮件
假设我们自己的电子邮件地址是from@163.com,对方的电子邮件地址是to@sina.com(这里的地址虚拟的),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email ...
- python中的SMTP发送邮件
一. 介绍 python3中自带了smtplib模块和email模块 smtplib模块:负责与邮件服务器的交互 email模块:负责组织邮件内容 二. smtplib模块 smtplib模块:主要是 ...
- 使用 phpMailer 基于(SMTP) 发送邮件
PHPMailer是一个用于发送电子邮件的PHP函数包.它提供的功能包括:在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址.支持多种邮件编码包括:8bit,base64,binary和quote ...
- python实战===使用smtp发送邮件的源代码,解决554错误码的问题,更新版!
import smtplib from email.mime.text import MIMEText from email.header import Header import time #密文输 ...
- python通过SMTP发送邮件失败,报错505/535
python通过SMTP发送邮件失败:错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission') 我们使用pyth ...
- python大法好——Python SMTP发送邮件
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
随机推荐
- Mapper 编写有哪几种方式?
第一种:接口实现类继承 SqlSessionDaoSupport:使用此种方法需要编写 mapper 接口,mapper 接口实现类.mapper.xml 文件. 1.在 sqlMapConfig.x ...
- linux-安装zookeeper及相关操作
下载两个安装包并解压: 配置jdk环境变量: [root@VM-0-10-centos zookeeper]# cat /root/.bash_profile # .bash_profile # Ge ...
- SPI简单解析
什么是SPI 一种服务加载方式,全名为Service Provider Interface,Service提供者接口 如果我们要抽象里面的模块,在面对对象编程当中,我们模块之间,一般推荐模块之间基于 ...
- synchronized使用及原理解析
修饰静态方法.实例方法.代码块 Synchronized修饰静态方法,对类对象进行加锁,是类锁. Synchronized修饰实例方法,对方法所属对象进行加锁,是对象锁. Synchronized修饰 ...
- Python - dict类型
- ES6实战:新数字方法
本文翻译自:https://www.sitepoint.com/es6... 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文介绍了ES6中全新的数字方 ...
- hql常用查询语句
// HQL: Hibernate Query Language.// 特点:// >> 1,与SQL相似,SQL中的语法基本上都可以直接使用.// >> 2,SQL查询的是表 ...
- fetch和axios区别,摘自Stack Overflow网站答案
fetch 请求let url = 'https://someurl.com'; let options = { method: 'POST', mode: 'cors', headers: { 'A ...
- Mybatis模糊查询结果为空的解决方案
写在前面 Mybatis使用模糊查询,查询结果为空的解决方案,我的代码是 select * from sp_user where 1=1 <if test="username!=nul ...
- Git原理学习记录
Git原理学习记录 1.git init git-test git init 实际上就是在特定的目录下创建对应的目录和文件 2.object $ echo "V1" > ...