使用smtp包发送邮件还依赖email的一些方法

发送邮件主要分为三步:

    1,定义邮箱参数:邮箱服务器地址,邮箱用户名,邮箱密码,邮件发送方,邮件接收方,邮件标题,邮件内容

    2,配置发送内容

    3,实例化邮箱,连接邮箱,登陆邮箱,发送邮件

代码如下:

import smtplib
from email.mime.text import MIMEText
from email.header import Header #定义邮箱参数
mail_sever = 'smtp.163.com' #邮箱服务器地址
mail_user = 'xxx@163.com' #邮箱用户名
mail_pass = 'xxx' #邮箱密码

sender = 'xxx@163.com' #邮件发送方
reciver = 'xxx@qq.com' #邮件接收方

subject = 'python' #邮件标题
content = 'over' #邮件内容 #配置发送内容
msg = MIMEText(content,_subtype='plain',_charset='utf-8') # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
msg['subject'] = Header(subject,'utf-8')    #邮件标题
msg['From'] = sender #邮件发送方
msg['To'] = reciver               #邮件接收方 #实例化邮箱
smtp = smtplib.SMTP() #实例化邮箱
smtp.connect(mail_sever)                 #连接邮箱服务器
smtp.login(user=mail_user,password=mail_pass) #登陆邮箱
smtp.sendmail(sender,reciver,msg.as_string())     #发送邮件
print('ok')

补充:

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

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:w3cschool.cn,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。
  • local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP对象使用sendmail方法发送邮件,语法如下:

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

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。

添加附件的方法:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
#定义邮箱参数
mail_sever = 'smtp.163.com' #邮箱服务器地址
mail_user = 'xxx@163.com' #邮箱用户名
mail_pass = 'xxxx' #邮箱密码
sender = 'xxx@163.com' #邮件发送方
reciver = 'xxx@163.com' #邮件接收方
subject = 'python' #邮件标题 #配置发送内容
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
# msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg = MIMEMultipart()
#邮件标题
msg['subject'] = Header(subject,'utf-8')
#邮件发送方
msg['From'] = sender
#邮件接收方
msg['To'] = reciver
#邮件正文内容
msg.attach(MIMEText('邮件发送测试...','plain','utf-8'))
#构造附件1
att1 = MIMEText(open(r"C:\\Users\\jfw2462\\Desktop\\工作\\环境\\服务器密码IP信息.xlsx",'rb').read(),'base64','utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test.xlsx"'
msg.attach(att1)
#实例化邮箱
smtp = smtplib.SMTP()
#连接邮箱服务器
smtp.connect(mail_sever)
#登陆邮箱
smtp.login(user=mail_user,password=mail_pass)
#发送邮件
smtp.sendmail(sender,reciver,msg.as_string())
print('ok')

python3 smtplib发送邮件的更多相关文章

  1. Python3实现发送邮件和发送短信验证码

    Python3实现发送邮件和发送短信验证码 Python3实现发送邮件: import smtplib from email.mime.text import MIMEText from email. ...

  2. python3使用smtplib发送邮件,带xlsx附件

    一.概述 最近在做一个统计报表,需要发送邮件,并带附件的. 在之前的文章中 https://www.cnblogs.com/xiao987334176/p/10022026.html 已经实现了发送邮 ...

  3. Python3 SMTP发送邮件

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

  4. 吴裕雄--天生自然python学习笔记:Python3 SMTP发送邮件

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

  5. Python3.7 发送邮件 报‘[WinError 10061] 由于目标计算机积极拒绝,无法连接’错误的解决方法

    背景: 最近在练习Python 的邮件发送功能 照着教程写了一个简单的demo 结果运行时报如下错误:[WinError 10061] 由于目标计算机积极拒绝,无法连接. 如图: 解决路径如下: St ...

  6. python smtplib发送邮件遇到的认证问题

    python的smtplib模块主要是用来发送邮件的,使用起来比较方便. 使用程序发送邮件只需要写以下几行代码就OK了: #!/usr/bin/env python import smtplib s ...

  7. python smtplib 发送邮件简单介绍

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

  8. Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)

    一.说明 1.1 程序说明 (1)smtp是邮件发送协议:pop和imap都是邮件接收协议,两者的区别通常的说法是imap的操作会同步到邮箱服务器而pop不会,表现上我也不是很清楚 (2)本程序实现使 ...

  9. 【转载】python中利用smtplib发送邮件的3中方式 普通/ssl/tls

    #!/usr/bin/python # coding:utf- import smtplib from email.MIMEText import MIMEText from email.Utils ...

随机推荐

  1. 黑马架构师v2.5.1 (codeUtil)使用注意事项

    资源 1.资料里的codeutil软件有问题,使用时部分类和接口文件名后有一串日期数字等.码云的没问题 2.生成代码后zookeeper的IP改为本机的

  2. Unity2D项目-平台、解谜、战斗! 1.5 Player框架、技能管理组件

    各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 前文提到,凡是有"攻击"语义的对象,在游戏中,我们给予其一个"CanFight"组件予 ...

  3. 【pytest官方文档】解读Skipping test functions,跳过测试用例详解

    有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败.那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过 ...

  4. 【2w字干货】ArrayList与LinkedList的区别以及JDK11中的底层实现

    1 概述 本文主要讲述了ArrayList与LinkedList的相同以及不同之处,以及两者的底层实现(环境OpenJDK 11.0.10). 2 两者区别 在详细介绍两者的底层实现之前,先来简单看一 ...

  5. 8. vue给标签动态绑定title

    在利用vue开发时,如果标签宽度比较小,我们需要利用overflow:hidden;text-overflow:ellipsis;white-space: nowrap;对其进行隐藏,但隐藏后如何读其 ...

  6. (十四)docker exec 详解

    1. 作用 在运行的容器中执行命令 2. 语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后台运行 ...

  7. 图解Leetcode组合总和系列——回溯(剪枝优化)+动态规划

    Leetcode组合总和系列--回溯(剪枝优化)+动态规划 组合总和 I 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 ...

  8. [Java] 数据类型, 变量, 运算符, 表达式

    title: [Java] 变量与表达式 你已经学会输出 Hello world 了, 那么现在, 我们来学习关于变量的知识 基本数据类型 在 Java 中, 有 8 种基本的数据类型: 名称 描述 ...

  9. php 操作 redis 常用命令

    原文地址: https://www.cnblogs.com/zhanghanwen16/p/9510481.html 1.redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回tr ...

  10. 【工具库】Java实体映射工具MapStruct

    一.什么是MapStruct? MapStruct是用于代码中JavaBean对象之间的转换,例如DO转换为DTO,DTO转换为VO,或Entity转换为VO等场景,虽然Spring库和 Apache ...