python邮件入门,通过互联网服务器发送邮件(foxmail-qq代发),SMTP/POP3服务

本文主要是介绍python邮件入门,通过互联网服务器发送邮件(foxmail-qq代发),SMTP/POP3服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、python邮件入门

1.SMTP概述

SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议,使用TCP协议25端口

SMTP是一组用于由源地址到目的地址传送邮件的规则,由它来控制信息的中转方式

python的smtplib模块提供了一种途径发送电子邮件,它对smtp协议进行了简单的封装

 

2.设置邮件格式

标准邮件需要三个头部信息

From:发件人

To:收件人

Subject:主题

>>> message=MIMEText('python 邮件发送测试...','plain','utf-8')
>>> message['From']=Header('zhangsan','utf-8')
>>> message['To']=Header('lisi','utf-8')
>>> message['Subject']=Header('Python SMTP 邮件测试','utf-8')

 

3.连接邮件服务器

连接服务器分为连接本地服务器和外部服务器(联网),连本地不需要身份验证

>>> smtp_obj=smtplib.SMTP('localhost')                                    #连接本地服务器

连接外部服务器:

>>> smtp_obj = smtplib.SMTP()                                                               #使用SMTP协议
>>> smtp_obj.connect(mail_host)                                                            #连接服务器
>>> smtp_obj.login(mail_user, mail_pwd)                                                #登录服务器,需输入登录账号和密码

 

4.sendmail方法

PythonSMTP对象使用sendmial方法发送邮件

SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])

sendmail方法有三个必须参数:

-收件人

-发件人

-消息主体msg,msg是字符串,表示邮件

>>> smtp_obj=smtplib.SMTP('localhost')
>>> smtp_obj.sendmail(sender,receivers,message.as_string())
{}

 

5.发送一封邮件

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

Python SMTP 对象使用 sendmail 方法发送邮件:

  1. >>> import smtplib
  2. >>> from email.mime.text import MIMEText
  3. >>> from email.header import Header
  4.  
  5. #邮件正文有三个参数:第一个为文本内容,第二个设置文本格式plain,第三个utf-8设置编码保证多语言兼容性
  6. >>>message = MIMEText('Python邮件发送测试\n', 'plain', 'utf8')   
  7.  
  8. 标准邮件需要三个头部信息: From, To, 和 Subject
  9. #发送者信息
  10. >>>message['From'] = Header('root@localhost', 'utf8')    
  11. #接收者信息
  12. >>>message['To'] = Header('zhangsan@localhost', 'utf8')
  13. #主题信息
  14. >>>message['Subject'] = Header('测试邮件', 'utf8')
  15.  
  16. >>> sender='root@localhost.com'                                         #发送者
  17. >>> receivers=['lisi@localhost','zhangsan@localhost']         #接收者
  18. >>> smtp_obj=smtplib.SMTP('localhost')                              #连接本地服务器
  19. # smtplib负责发送邮件
  20. >>> smtp_obj.sendmail(sender,receivers,message.as_string())

参数说明:

sender: 邮件发送者地址。

receivers: 字符串列表,邮件发送地址。

message.as_string(): 发送消息 ,str模式

由于可以一次发给多个人,所以recives传入一个列表,邮件正文是一个str,as_string()把MIMEText对象变成str。

执行脚本:

  1. [root@ localhost day12]# python3 send_mail.py
  2. [root@ localhost day12]# mail –u zhangsan
  3. Heirloom Mail version 12.5 7/5/10. Type ? for help.
  4. “/var/mail/bob”: 1 message 1 new
  5. >N 1 =?utf8?q?root=4Oloca Mon Jul 30 09:36 18?663 ‘’
  6. Python邮件发送测试
  7. &

 

二、案例:通过互联网服务器发送邮件(foxmail代发)

 

步骤一:环境准备

使用SMTP协议发送的邮件,需要先查看您的发件人邮箱是否有开启SMTP协议,如没有需要开启,测试使用的是qq.com的邮箱作为发信人邮箱,开启SMTP协议如下

 

1. 先登录到qq.com邮箱,如图-1所示:

 

2.点击设置,开启POP3/SMTP服务

需要手机验证

 

验证后收到授权码

 

3.注册foxmail邮箱账号

下载foxmai,网上可以下载

 

4.登录foxmail

配置账号信息,点击新建

选择qq邮箱

输入刚才注册的foxmail登录账号和授权码

确认一下收件服务器和发件服务器,这里的重点是发件服务器,我们等下写的python就是借用smtp.qq.com服务器来发送邮件

 

5.编写python脚本

这里给出样板,信息填自己的

#!/usr/bin/env python3
import smtplib
from email.mime.text import MIMEText
from email.header import Header

mail_host='smtp.qq.com'                                                #使用qq服务器
mail_user='xxxxxxxxxxx@foxmail.com'                          #发件账号,填你刚才注册的foxmail邮箱账号
mail_pwd='xxxxxxxxxxxxx'                                             #授权码,也是刚才注册的

message=MIMEText('Python邮件测试','plain','utf8')                             #编写文章内容
message['From']=Header('xxxxxxxxxxx@foxmail.com','utf8')              #发送者
message['To']=Header('xxxxxxxxxxx@foxmail.com','utf8')                   #被发送者
message['Subject']=Header('python Mail Test','utf8')                            #邮件标题

sender='xxxxxxxxxxx@foxmail.com'                                                  #发送者,填你自己
receivers='xxxxxxxxxxx@qq.com'                                                      #被发送者,填你想法的账号

smtp_obj = smtplib.SMTP()                                                               #使用SMTP协议
smtp_obj.connect(mail_host)                                                            #连接服务器
smtp_obj.login(mail_user, mail_pwd)                                                #登录服务器

smtp_obj.sendmail(sender, receivers, message.as_string())             #发送邮件

 

6.执行脚本

  1. [root@ localhost /]# python3 mail_client.py

 

7.查看qq邮箱(被发送者)

收到邮件

由foxmail代发

 

后记:

这个案例中我是用的qq邮件登录的foxmail邮件服务器(下面简称fm),fm是一个很强大的软件,你可以使用163,网易,雅虎等邮箱登录fm,fm也可以作为一个代发邮件的服务器,支持SMTP/POP3协议。配置方式参考上面案例。

 

在真实的工作环境中,我们可以将这个脚本作为监控器触发的动作,即报警后自动向我们的邮箱发送报警信息,这样我们就可以随时接受到服务器异常的消息,方便我们的办公 

这篇关于python邮件入门,通过互联网服务器发送邮件(foxmail-qq代发),SMTP/POP3服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313427

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al