python 发送带附件的邮件
特别注意的地方:filespart.add_header("Content-Disposition","attachment",filename=file_name)中Content-Disposition的横杠“-”别写成了“_”,
否则邮件附件的类型会变成*.bin类型文件,我就踩进了这个坑
#encoding=utf-8
import smtplib
import os
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from config.config import * #config.config为配置文件,包含参数smtp_host,smtp_from_email,smtp_pwd,smtp_port
class Carry_files_EmailSender(object):
def __init__(self):
self.smtp_host = smtp_host # 发送邮件的smtp服务器(QQ邮箱:"smtp.qq.com",163邮箱:"smtp.163.com")
self.smtp_from_email = smtp_from_email # 邮件发送者的邮箱
self.smtp_pwd = smtp_pwd # 邮件发送者的邮箱的授权码
self.smtp_port = smtp_port # smtp邮箱的端口,默认是465 def send_email(self, to_email_list, subject, body,files_part=None):
'''
发送邮件
param to_email_list: 收件人邮箱列表,格式["123@qq.com","123@163.com"]
param subject: 邮件主题,格式:"邮件主题"
param body: 邮件内容, 格式:"邮件所说的内容"
param files_part=None 发送的附件,默认不带附件,格式 r"E:\test.xlsx"
'''
msg= MIMEMultipart()
msg.attach(MIMEText(body, 'plain', 'utf-8'))
msg["From"] = self.smtp_from_email # 发件人
msg["To"] = ",".join(to_email_list) # 收件人列表,转换成string,用逗号隔开
msg["Subject"] = subject # 邮件标题 #上传指定文件构造附件
if os.path.exists(files_part):
filespart=MIMEApplication(open(files_part,'rb').read())
file_name=files_part.split("\\")[-1] #获取文件名
print("file_name=",file_name)
filespart.add_header("Content-Disposition","attachment",filename=file_name) #file_name是显示附件的名字,可随便自定义
msg.attach(filespart) else:
print("加载的附件不存在,发送无附件邮件") try:
SmtpSslClient = smtplib.SMTP_SSL(self.smtp_host, self.smtp_port) # 实例化一个SMTP_SSL对象
Loginer = SmtpSslClient.login(self.smtp_from_email, self.smtp_pwd) # 登录smtp服务器
print("登录结果:Loginer=", Loginer) # loginRes = (235, b'Authentication successful')
if Loginer[0] == 235:
print("登录成功,code=",Loginer[0])
SmtpSslClient.sendmail(self.smtp_from_email, to_email_list, msg.as_string()) # 发件人,收件人列表,邮件内容
print("mail has been send successfully,message:", msg.as_string())
print("发送成功")
SmtpSslClient.quit() # 退出邮箱
else:
print("邮件登录失败,发送失败。code=", Loginer[0], "message=", msg.as_string())
except Exception as e:
traceback.print_exc()
print("邮件发送失败,报错信息:", e) if __name__=="__main__":
senders = Carry_files_EmailSender()
senders.send_email(["123456@qq.com", "123456@163.com"], "测试邮件发送的标题", "这是一个测试邮件发送的内容",r"E:\test\test.txt")
python 发送带附件的邮件的更多相关文章
- Python发送带附件的邮件
看别人的博客就不要在往别人的邮箱里发东西了行不行, 有点素质可以吗!!! 写出来分享还不知道珍惜!!!!! #-*-encoding:utf-8 -*- import os import smtpli ...
- python 发送带附件的 邮件
from email.MIMETextimportMIMETextfrom email.MIMEMultipartimportMIMEMultipartimport smtplib mail_host ...
- 利用Python+163邮箱授权码发送带附件的邮件
背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...
- java发送带附件的邮件
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- C#发送带附件的邮件的代码
如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...
- [SpringBoot] - 发送带附件的邮件
<!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...
- 接口测试基础——第2篇smtplib发送带附件的邮件
我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIM ...
- 使用JavaMail发送带附件的邮件
所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...
- spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)
一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...
随机推荐
- RabbitMQ五种消息队列学习(三)–Work模式
由于在实际应用中,简单队列模型无法解决很多实际问题,而且生产者和消费者是一对一的关系.模型较为单一.故引入Work模式. 结构图 一个生产者.多个消费者. 一个消息只能被一个消费者获取. 测试实现: ...
- go-ehtereum编译:
git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum && git checkout make ge ...
- iOS开发之资料收集
github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github ...
- centos7磁盘挂载及取消
磁盘挂载查看已经挂载磁盘数 cat /proc/scsi/scsi | grep HostHost: scsi1 Channel: 00 Id: 00 Lun: 00Host: scsi2 Chann ...
- LaTeX网址
https://www.latex-project.org/ latex官网 http://www.latexstudio.net/ 国内知名latex学习中心 https://www.ove ...
- python线程池(threadpool)模块使用笔记 .python 线程池使用推荐
一.安装与简介 pip install threadpool pool = ThreadPool(poolsize) requests = makeRequests(some_callable, li ...
- 用VSCode写Vue要用到的配置
[本文出自天外归云的博客园] 文件-首选项-设置-打开settings.json-用户设置区域填写: { "workbench.colorTheme": "Monokai ...
- MySQL 加锁处理分析<转>
1 背景 1 1.1 MVCC:Snapshot Read vs Current Read 2 1.2 Cluster Index:聚簇索引 3 1.3 2P ...
- java 中 ResourceBundle 使用 国际化使用
java 中 ResourceBundle 使用 可以根据以下类进行获取国际化文件: package org.mybatis.generator.internal.util.messages; imp ...
- CreateWindowEx failed (当前程序已使用了 Window 管理器对象的系统允许的所有句柄。)
我在QT图形场景视图中通过QGraphicsProxyWidget添加代理Widget(实现添加基本的QT Widget,如按钮.复选框.日期时间控件等),当数量超过3500左右的时候,QT应用程序直 ...