SMTP协议

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式

smtplib模块

Python的smptlib模块提供了一种很方便的途径来发送电子邮件。它对SMTP协议进行了简单的封装。们可以使用SMTP对象的sendmail发放发送邮件,首先我们看下此模块重要的方法如何使用

1.connect(self,host='localhost',port=0)

host:邮件服务器地址

port:邮件服务器端口(不输入参数默认为25)

2.login(self,user,password)

user:登录邮箱用户名

password:登录邮箱密码

3.sendmail(self,from_addr,to_addrs,msg)

from_addr:发送邮件人地址

to_addrs:接受邮件人地址

msg:发送的内容

一般我们发送邮件时有两种方式。

方式一:自己邮箱的web页面,输入用户名和密码登录,打开发邮件页面,填写对方的邮箱地址及邮件标题与正文,完成后点击发送。

方式二:下载安装邮箱客户端,填写邮箱账号密码及邮箱服务器,一般的邮箱客户端会默认记下这些信息,所以,这个过程只需要填写依次,后面发邮件的过程与方法一相同。而我们通过python发送邮件更像方式二,因为需要填写邮箱服务器。

实例

我使用的测试邮箱系统为QQ邮箱,在进行测试之前我们需要设置一下QQ邮箱,获取QQ邮箱的授权码(授权码是用于登录第三方邮件客户端的专用密码)用来以后登录邮箱时的密码,对于其他邮箱如何获取授权码请自行百度

1.打开QQ邮箱,依次点击【设置】-【账户】如图1:

图1:

2.找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”操作列表,图2:

3.开启前2个服务,并点击【生成授权码】,我这边得到的授权码为:gifhhsbgqyovbhhc

实现代码

这边我是读取文件中的内容充当发送邮件内容的,若想测试可以把传递的参数去掉,并注释掉14-20行,加一行file_msg='<html><h1> python test send imail</h1></html>'

 #! user/bin/python
'''
代码说明:自动发送邮件
编写日期:2018.07.16
设计者:linux超
''' import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time def send_email(filename):
# 打开报告文件读取文件内容
#filename = './report/'+ time.strftime('%Y-%m-%d %H_%M_%S')
f = open(filename,'r')
file_msg = f.read()
#print(filename)
#print(file_msg)
f.close()
# 邮件服务器
smtpserver = 'smtp.qq.com'
# 发件人用户名和密码
user = 'username@qq.com'
password = 'gifhhsbgqyovbhhc'
# 发件人
sender = 'sender@qq.com'
# 收件人
receiver = 'receiver@qq.com'
# 邮件主题
subject = 'Python test send email'
# 邮件设置
msg = MIMEText(file_msg,'html','utf-8')
msg['subject'] = Header(subject,'utf-8')
msg['from'] = sender
# 连接服务器,登录服务器,发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver,465)
smtp.login(user,password)
try:
smtp.sendmail(sender,receiver,msg.as_string())
except Exception as e:
print('send failed',e)
else:
print('send success!')
smtp.quit()# 结束SMTP会话
print('send email success!')
if __name__ == '__main__':
send_email('./report/2018-07-16 13_09_21.txt')

5.结果:

总结: 后续会填加发送带附件的案例

python☞自动发送邮件的更多相关文章

  1. 用Python自动发送邮件

    用Python自动发送邮件     最近需要在服务器上处理一些耗时比较长的任务,因此想到利用python写一个自动发送邮件的脚本,在任务执行完毕后发送邮件通知我.以下代码以163邮箱为例: 开通163 ...

  2. 【Python】利用python自动发送邮件

    前言 在训练网络的过程中,需要大量的时间,虽然可以预估网络训练完成时间,但蹲点看结果着实有点不太聪明的亚子. 因此,参照师兄之前发的python利用smtp自动发邮件的代码,我作了些调整,并参照网上的 ...

  3. Appium+python 自动发送邮件(1)(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10056091.html) SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的s ...

  4. 利用Python自动发送邮件

    # -*- coding:utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerimport smtp ...

  5. python 自动发送邮件遇到的问题

    在学习自动化测试高级应用,根据内容写关于自动发送邮件出现了几个问题以及解决办法: 问题1: 代码写好之后,运行的时候,出现如下报错: SMTPAuthenticationError: (550, '\ ...

  6. Python 自动发送邮件

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器 ...

  7. python自动发送邮件

    Python 的 smtplib 模块提供了发送电子邮件的功能.测试报告出来后,然后就把报告发送到邮箱. 一.先来看简单的列子 使用QQ邮箱发送邮件,使用的是授权码,需要先到QQ邮箱申请授权码. 邮箱 ...

  8. Python自动发送邮件(可带附件)

    Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件 ...

  9. Python自动发送邮件-smtplib和email库

    ''' 一.先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以163为例子百度搜索服务器是 smtp.163.com 三. ...

随机推荐

  1. 一、Activity的生命周期和启动模式

    1.Activity的生命周期 1.1.典型情况下的生命周期 在有用户参与的情况下,Activity所经过的生命周期的改变. Activity会经历如下生命周期: onCreate-onRestart ...

  2. 章节八、3-如何用Chrome开发者工具查看元素

    一.如何使用开发者工具,操作步骤与火狐浏览器一致(此处不重复叙述,此处主要描述如何查找元素是否存在以及元素在页面中是否重复). 1.打开开发者选项,然后按“ctrl+f”,会出现一个输入框在输入框中输 ...

  3. Liunx-cd命令

    1. 如何进入上级目录cd .. 2. 如何进入当前用户主目录cd ~3. 如何进入上两级目录cd ../.. 4. 进入当前目录命令cd .5. 如何进入目录  /lym/b 6.切换跟目录

  4. Golang随机数生成

    需求:10以内随机生成2个幸运数字 package main import ( "fmt" "math/rand" ) func main() { fmt.Pr ...

  5. 得力D991CN Plus计算器评测(全程对比卡西欧fx-991CN X)

    得力在2018年出了一款高仿卡西欧fx-991CN X中文版的计算器,型号为D991CN Plus,在实现同样功能的前提下,网销价格是卡西欧的三分之一左右.但是这款计算器与卡西欧正版计算器差距是大是小 ...

  6. SpringBoot2.0之八 多数据源配置

     在开发的过程中我们可能都会遇到对接公司其他系统等需求,对于外部的系统可以采用接口对接的方式,对于一个公司开发的两个系统,并且知道相关数据库结构的情况下,就可以考虑使用多数据源来解决这个问题.Spri ...

  7. MySql开启慢查询日志并使用pt-query-digest 分析

    慢查询日志会将查询过程中超出你设置的时间的查询记录下来,以便供开发者进行分析和优化. 1. 开启慢查询 1.1 查看当前设置 mysql> show variables like "% ...

  8. .NET 下 模拟数组越界

    前面一篇文章提到过 数组越界行为,虽然编译器为我们做了大量的检查工作让我们避免这些错误. 但是我觉得还是有必要模拟一下数组越界,感受一下这个错误. 那么对于.NET来说我们怎么来模拟数组越界呢? 一. ...

  9. oracle无法插入数据

    最近遇到一个问题,本来插入数据好好的,突然都不能插入了. 报错------------------->ora-01653:表无法通过128(在表空间)扩展 原因是表满了!!! 解决方案: 1. ...

  10. Docker & ASP.NET Core (1):把代码连接到容器

    和这种蛋糕一样,Docker的容器和镜像也是使用类似的分层文件系统构建而成的. 这样做的好处就是可以节省硬盘空间,也利于复用等等.因为Docker基于镜像创建容器的时候,其镜像是共享的:而且镜像里面的 ...