随笔:Python发送SMTP邮件方法封装

Python SMTP发送邮件 smtp发送文件 阅读详情

随笔:Python发送SMTP邮件方法封装

1、封装的方法可以用来发送附件
2、附件名称为中文不会乱码
3、也可以不带附件
4、正文是纯文本

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr


class Send_smtp_email_report(object):
    '''
    这是用来发送SMTP协议的报告邮件
    '''
    def __init__(self, sender, password, name=''):
        '''
        :param sender: 发送邮件人的邮箱
        :param password: 发送邮件人的密码
        :param name: 发送邮件人的姓名
        '''
        self.__name = name
        self.__sender = sender
        self.__password = password

    def send_smtp_email_report(self, receive, subject, send_report, text='', smtp_server='smtp.qq.com', name='', report_name=''):
        '''
        :param receive: 收件人的邮箱
        :param subject: 邮件主题
        :param send_report: 附件报告的绝对路径
        :param report_name: 附件名称
        :param text: 邮件正文
        :param smtp_server:SMTP服务器,如'smtp.qq.com',默认是smtp_server='smtp.qq.com'
        :param name:收件人名称
        :return:
        '''
        # 设置邮件
        msg = MIMEMultipart()
        msg['From'] = formataddr((Header(self.__name, 'utf-8').encode(), self.__sender))
        msg['To'] = formataddr((Header(name, 'utf-8').encode(), receive))
        msg['Subject'] = Header(subject, 'utf-8').encode()

        # 邮件正文
        txt = MIMEText(text)

        # 将正文加载到邮件中
        msg.attach(txt)
        try:
            # 构造附件
            file = open(send_report, 'rb')
            send_file = file.read()
            file.close()

            # 设置附件
            att = MIMEText(send_file, 'base64', 'utf-8')  
            att["Content-Type"] = 'application/octet-stream'  
            att["Content-Disposition"] = 'attachment; filename="%s.html"' % (Header(report_name, 'utf-8').encode())  

            # 将附件加载到邮件中
            msg.attach(att)
        finally:
            # 发送邮件
            server = smtplib.SMTP(smtp_server, 25)
            server.set_debuglevel(1)
            server.login(self.__sender, self.__password)
            server.sendmail(self.__sender, [receive], msg.as_string())
            server.quit()
            return '发送成功'

示例:

'''
    这里的demo是演示邮件发送方法
'''
from public_methods.common.smtp_email_report import SendSmtpEmailReport

user = '@qq.com' # 邮件发送人邮箱
password = 'password' # 发送邮箱报告密码
receive = '@qq.com' # 接收邮件人邮箱
report = r'D:\test\PycharmProjects\cloudAItest\testrunner\test测试报告1.html' # 邮件附件路径
# 调用方法入参,第一个name是发送人名称
send_email = SendSmtpEmailReport(sender=user, password=password, name='demo').send_smtp_email_report(receive=receive,
                                                                                                     subject='demo', # 主题
                                                                                                     send_report=report, # 附件
                                                                                                     text='测试', # 正文
                                                                                                     smtp_server='smtp.qq.com', # qq发送,也可以用其他类型邮箱,如139
                                                                                                     report_name='demo', # 附件名称
                                                                                                     name='demo_receive' # 接收人名称
                                                                                                     )
print(send_email)

Python3 SMTP发送邮件 基本概念与准备工作 SMTP协议 SMTP(Simple Mail Transfer Protocol)是用于发送邮件的标准协议,Python通过smtplib库实现SMTP通信,email库负责构建邮件内容67。 邮箱配置 QQ邮箱:需在设置中开启SMTP服务并获取授权码(非登录密码),步骤: 设置 → 账户 → 开启POP3/SMTP → 安全验证 → 获取16位授权码 授权码用于替代密码进行第三方登录24。 163邮箱:类似操作,需在安全设置中开启SMTP服务。 阅读详情

相关推荐

讲解:在Python如何使用SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法 import smtplib smtpObj = smtplib.SMTP( [host [,...

python零基础入门 1743

python--邮件告警

一、了解SMTP协议二、编写发送邮件代码1.文本格式邮件2.html正文格式邮件3.添加附件发送邮件 一、了解SMTP协议 目前用于发送邮件的协议是SMTP(简单文本传输协议) python内置的smtplib模块提供了便捷的邮件发送方法,可以发送纯文本邮件、HTML邮件及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件 python创建SMTP对象的语法如下 import smtplib smtpobj .

CN_LiTianpeng的博客 2859

python SMTP邮件发送

SMTP: 参考博客: https://blog.csdn.net/qq_37193537/article/details/82692678 https://www.cnblogs.com/givemelove/p/11097778.html 这里根据教程使用QQ邮箱作为收发端 栗子: import smtplib from email.mime.text import MIMEText from email.header import Header if __name__ == "__main

Janus 2648

python学习之三 邮件发送

python学习之二 邮件发送 此代码经过验证可用 单个邮件发送Demo# -*- coding:utf-8 -*-import smtplib from email.mime.text import MIMEText from email.header import Header# 邮箱方面需要设置 POP3/SMTP/IMAP 权限#发送邮箱服务器smtpserver = 'smtp.163

袁军伟的博客 437

用python发送邮件 smtp

看了廖雪峰老师的教程,决定试试看能不能发送,试验用的是自己去QQ邮箱,首先要去QQ邮箱开启pop和SMTP服务才可以,下面是老师的代码块:from email.mime.text import MIMEText msg = MIMEText('hello, send by Python...', 'plain', 'utf-8') # 输入Email地址和口令: from_addr = raw_in

u011846143的博客 8729

Python3实现SMTP发送邮件

本文介绍如何使用Python3使用SMTP通过QQ邮箱发送邮件。   一、开启SMTP 在QQ邮箱顶部找到设置,然后进入邮箱设置-账号项。 在POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中,需要开启SMTP服务。 点击POP3/SMTP服务后的开启链接。会弹出验证密保的框。 打开QQ安全中心,输入动态密码。会弹出一个授权码,这个授权码相当...

比特实验室 2473

python测验4_Python接口测试实战4(上) - 接口测试框架实战

如有任何学习问题,可以添加作者微信:lockingfree课程目录本节内容数据分离 - 从Excel中读取数据增加log功能发送邮件使用配置文件框架整理数据分离 - 从Excel中读取数据之前的用例中,数据直接写在代码文件里,不利于修改和构造数据这里我们使用Excel保存测试数据,实现代码和数据的分离新建Excel文件test_user_data.xlsx包含两个工作簿TestUserLogin和...

weixin_39907526的博客 266

Python SMTP协议发送邮件

几乎所有编程语言都支持发送和接收电子邮件,Python也不例外。本节我们将学习使用Python来发送邮件。 一、电子邮件发送流程 假设我们自己的电子邮件地址是xxx@163.com,对方的电子邮件地址是xxx@qq.com,现在我们用邮件客户端软件(如Outlook或者Foxmail)写好邮件,填上对方Email地址,点击“发送”,电子邮件就发送出去了。 ...

xjtuse123的博客 1444

python+selenium-【六】-完整的项目结构

前言: 从前面五篇,对selenium大概也有了个理解,如何定位元素,如何操作元素,如何切换句柄。这时候就要做个小demo实战下了! 功能主要有: 1-PO模式,设计page、testcase、testsuit 2-打印log文件 3-生成测试报告 4-压缩测试报告,发送到邮箱 一、项目结构 二、pages讲解 pages是对要写自动化的页面进行分离,抽取出来定位元素,执行方法。以login为...

一个间歇性踌躇满志,持续性混吃等死的小菜鸟 4195

阿里云SMTP邮件发送Python demon实践

阿里云SMTP邮件发送Python & Django实践 说明: python 3.6 Django 2.2 阿里云轻应用服务器 注意:轻应用服务器上80 端口和25端口是被占用,465端口被SSL加密,如果程序中没有开启SSL服务无法 发送 邮件最终导致邮件发送失败,具体实践请 看python$Django 的demon 阿里云邮件服务(了解) 邮件发送类型 说明:阿里云只允...

qq_24667243的博客 2081

【Python技术学习】- python SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。Python创建 SMTP 对象语法如下:Python SMTP对象使用sendmail方法发送邮件,语法如下:这里要注意一下第三个参数,msg是字符串,表示邮件。

xiaoli8748的专栏 1808

【Python】Python使用smtplib发送简单文本邮件

原文:http://blog.sina.com.cn/s/blog_3fe961ae01013rz3.html   最近在实验室的服务器上做一些测试,因为测试时间经常要好几个小时甚至十几个小时,所以我想到在测试结束后将结果发送到我的邮箱中,这样就可以及时地了解到测试的结果是什么而不用守在计算机前。 整理了Python发送邮件的相关代码如下: send_email.py #coding=utf

bcafu的专栏 514

GD32官方资料学习体系(主要包括MCU选型、原理图PCB设计、软件开发入门及用户手册等)

大部分还未更新,先占个坑,日后更新…… 目前国外芯片涨价涨的离谱(就是在说ST),国内最好的替代就是兆易创新出的系列芯片了。但是官方资料繁杂,小白上手不易,因此边入门边记录,也给后来者根据官方资料可以有一个较为完整的学习体系。

Eddie的博客 1万+

Python中使用SMTP发送邮件以及POP收取邮件

假设我们自己的电子邮件地址是from@163.com,对方的电子邮件地址是to@sina.com(这里的地址虚拟的),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email地址,点“发送”,电子邮件就发出去了。这些电子邮件软件被称为MUA:Mail User Agent——邮件用户代理。 Email从MUA发出去,不是直接到达对方电脑,而是发到MTA:Mail Trans

张康的博客 6万+

STC8H开发(十六): GPIO模拟SPI驱动Ci24R1实现低成本无线遥控

本文详细介绍了如何使用STC8H单片机通过GPIO模拟SPI驱动Ci24R1无线模块,实现低成本无线遥控方案。内容涵盖硬件设计要点、软件驱动开发技巧及实战优化经验,特别适合消费电子产品开发者参考。Ci24R1凭借其高性价比和双模协议支持,成为替代传统nRF24L01+的理想选择。

weixin_30378623的博客 349

实战解析:从Innovus到Calibre的LVS错误排查全流程

本文详细解析了从Innovus到Calibre的LVS错误排查全流程,涵盖物理验证关键步骤与工具链协同。通过实战案例分享,重点解决器件不匹配、连接性错误等常见问题,并提供GDS导出规范、网表修正策略等实用技巧,帮助工程师高效完成芯片设计物理验证。

9o8p7i6u5y的博客 1034
上一篇: Python基础学习:打印九九乘法表
下一篇: 随笔:判断一个整数是否是质数,如果不是质数,那么因数表达式是什么
caodingzheng
博客等级 码龄7年 18粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值