Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python实用工具】巧妙利用Python实现发送带附件的邮件

【Python实用工具】巧妙利用Python实现发送带附件的邮件

作者头像
天道Vax的时间宝藏
发布于 2021-08-11 08:03:10
发布于 2021-08-11 08:03:10
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

Python SMTP发送邮件

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

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

smtplib函数使用格式规则:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。(实例中,我们使用QQ邮箱,端口号为465)
  • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:

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

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

另外使用第三方SMTP时需要打开POP/SMTP权限,获得授权码。

这里使用了 QQ 邮箱(你也可以使用 163,Gmail等)的 SMTP 服务,需要做以下配置:

QQ 邮箱通过生成授权码来设置密码:

全部代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender = '87016428@qq.com'  # 发件人邮箱账号,需要改成自己的
my_pass = 'xxxx xxxx xxxx xxxx'  # 发件人邮箱密码 经过授权后,填写授权码代替密码,需要改成自己的
my_user = '87016428@qq.com'  # 收件人邮箱账号,我这边发送给自己 需要改成收件人

#创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Header("Jankos Hsu", 'utf-8')
message['To'] =  Header("测试", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

#邮件正文内容
message.attach(MIMEText('邮件附件测试内容', 'plain', 'utf-8'))


# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)


def mail():
    ret = True
    try:
        msg = MIMEText('填写邮件内容', 'plain', 'utf-8')
        # msg['From'] = formataddr(["Jankos Hsu", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        # msg['To'] = formataddr(["Jankos Hsu", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        # msg['Subject'] = "菜鸟教程发送邮件测试"  # 邮件的主题,也可以说是标题

        server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender, [my_user, ], message.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret = False
    return ret


ret = mail()
if ret:
    print("邮件发送成功")
else:
    print("邮件发送失败")

实现效果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
9行自定义函数教你用Python发送电子邮件!
大概是在两三个月前,陆续有几位在职朋友问我如何使用Python发送邮件,说心里话这方面的操作在我之前的工作履历中真的没有碰到,所以我没有很好地帮助他们。但这个问题一直埋在我的心底,如果将来我也碰到了这个问题怎么办?总不能临时抱佛脚吧,必须得未雨绸缪。所以这一段时间里,一旦有空就翻翻资料,查查google,写写测试代码,今天就简单分享一下我的所学所得(真的不骗你,只需9行的自定义函数!)。
1480
2019/07/10
9150
9行自定义函数教你用Python发送电子邮件!
python自动发邮件总结及实例说明
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。
周小董
2019/03/25
1.4K0
python自动发邮件总结及实例说明
python技能之发送邮件
python中发送邮件主要使用的库是 smtplib 安装命令也比较简单; pip install smtplib 编码实现发送邮件: 1、引入库: import smtplib from email.mime.text import MIMEText from email.utils import formataddr 2、定义发送函数;接收主题和内容参数 def mail(subject,text): #self.my_sender='**@163.com' # 发件人邮箱账号
JQ实验室
2022/05/06
4340
python3发送邮件
#163邮箱发送邮件 import smtplib from email.mime.text import MIMEText from email.utils import formataddr
py3study
2020/01/03
4240
使用python发邮件
# -*- coding: UTF-8 -*- import smtplib import traceback from email.mime.text import MIMEText from email.utils import formataddr class SendMail(): def mail(self,subject,text): #self.my_sender='****@163.com' # 发件人邮箱账号 #self.my_pass
JQ实验室
2022/01/11
1.2K0
python发送邮件(二)——smtplib模块和email模块
一、模块介绍 1、smtplib 模块(用于邮件的发送) ①理论解释 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) 通过这个语句,可以向SMTP服务器发送指令,执行相关操作(如:登陆、发送邮件)。所有的参数都是可选的。 host:smtp服务器主机名 port:smtp服务的端口,默认是25;端口号可以省略。 但是使用25号端口有一个问题,就是保密性不够好,数据都是明文传输,没有加密。 现在一般都推荐使用SSL,Secure So
Elsa_阿尼
2021/07/27
5.3K0
python发送邮件(二)——smtplib模块和email模块
python3.x下 smtp发送htm
综合网络上的文章以及自己的实验,在python的IDEL下成功的通过SMTP发送出去了邮件。现将过程记录如下:
py3study
2020/01/03
7400
python3.x下 smtp发送htm
Python实现自动发送邮件(详解)
这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码。
全栈程序员站长
2022/11/17
1.1K0
Python实现自动发送邮件(详解)
PYTHON初学之API爬取天气预报数据
一直看到python好多人学,终于自己耐不住性子,还是开始学习起来了。 初学python,看到了这个经典的项目,于是就开始进行学习。并进行了相应的改(乱)善(改),将原本项目采用的储存数据库改为mysql,只储存近三天的天气情况,增加定时执行,成功之后邮件提醒等。
布衣者
2021/09/07
8070
zabbix邮件报警python脚本
下面是两个不同的python脚本,只是连接邮件服务器的方法不同,其他方法还是相同的
py3study
2020/01/08
8510
用Python写了一个不起床让你后悔的闹钟,周末还敢赖床吗
导读 哎 😡 ,别提了自从回到家整个人都懒散了,总被人嫌弃不说还觉得生活没有了盼头,还好在社区认识了一些大佬让我想重新来过做回自己,不在做小丑,于是乎我就想用个东西来提醒我别睡懒觉,然后这篇文章就诞生了。 来吧看看今天的故事。 闹钟 有人说程序员的日常就是反复造轮子,我觉得能在原来的基础上玩出新花样来帮到一些人,做这些事还是挺有趣的。 没有什么高深的学问就是给大家在枯燥的夏日带来一点欢愉。 使用的模块 import time from datetime import datetime from playso
周萝卜
2022/09/28
5420
python邮件发送和图片
​ 上班时间干别的事情是不太好的,如果被别人看到的话会很大程度上影响个人的前进的步伐。但是如果工作做的差不多了,那么闲着也是闲着。反正cpu资源浪费一天就是一天的折旧,那还不如多学点东西。我们之前的过程都需要点击运行,然后出来一个图。这种方式目标太大,容易被人发现。那么我们做个定时任务。然后把图片不显示,而是保存为图片。运营结束之后将图片放到邮件里,然后发送到手机。相对短信需要花费金钱来说,邮件最好了。
写一点笔记
2020/11/27
9700
python 使用stmp发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
py3study
2020/01/06
1.1K0
python SMTP自动发送文本,HTML,附件邮件
1.发件人的邮件 比如:sender@163.com,sender@126.com,sender@qq.com,sender@gmal.com
用户8346838
2021/03/11
1.4K0
python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)
  本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理。在写脚本时,放到后台运行,想知道执行情况,会通过邮件、SMS(短信)、飞信、微信等方式通知管理员,用的最多的是邮件。在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮
北京-宏哥
2019/09/11
2.3K0
python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)
Python3实现自动发送邮件
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
用户9925864
2022/07/27
3380
Python3实现自动发送邮件
使用python-SMTP功能实现用短信接受服务器告警
简介 昨天写了一个监控服务器温度的脚本,觉得不够完善,所以改良了一下 优点 使用python-SMTP功能实现用短信接受服务器的告警信息 代码 import subprocess import re import smtplib from email.mime.text import MIMEText from email.utils import formataddr # 发件人邮箱账号 my_sender='kevin@tadayadd.cn' my_pass = 'xxxxxx520' # 收件人邮
kevinfaith
2020/01/21
9730
python发送邮件
一.获取邮箱授权(以QQ邮箱为例子) 点击设置>账号 开启服务:POP3/SMTP服务 选择开启 然后获取授权码xxx 二.发送文本 import smtplib from email.mime.text import MIMEText subject = "标题" # 邮件的主题 content = '测试' #内容 sender = "568972484@qq.com" # 发件人 password = 'xxx' # 刚才我们在QQ邮箱里设置的授权密码 receiver = "5689
小小咸鱼YwY
2020/06/19
5410
Python发送邮件
Python发邮件需要有SMTP服务,可以在本地搭建SMTP服务,也可以使用第三方的SMTP服务(比如网易邮箱或QQ邮箱)。 这里我使用了网易126邮箱来发邮件。
海天一树
2018/07/25
1.5K0
Python发送邮件
Linux之python发送邮件
在服务器端开发时,会遇到通过邮件发送报警或结果的情形,本文对使用 python 发送附件的方法做一个总结,用到的库是 smtp 和 email 两个基础库
全栈程序员站长
2022/11/15
1.8K0
相关推荐
9行自定义函数教你用Python发送电子邮件!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验