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)
一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...
随机推荐
- inode满引发不能写文件的问题
一.引言: 二.文件解决: 三.inode概念: 四.尾声:
- [U3D Demo] 手机FPS射击游戏
游戏截图 使用插件 DOTween Easy Touch UGUI 游戏介绍 游戏使用C#开发,是在<Unity3D手机游戏开发>一书第3章游戏的基础上优化和修改的. 机枪镭射光线和枪口特 ...
- Nginx SSL 结合Tomcat 重定向URL变成HTTP的问题
http://www.siven.net/posts/d925bb5d.html *********************************************** 问题描述 由于要配置服 ...
- logstash之filter处理中括号包围的内容
如题,logstash之filter处理中括号包围的内容: $grep -v "#" config/logstash-nlp.yml input { kafka { bootstr ...
- idea 修改单个项目的 默认编码格式
- AICODER全栈实习报名
三期班开始报名 三期班定于6月17日开班,实习费用如下: 三个月模式实习费为12000元. 一个月模式实习费为4500元. AICODER提供后付费模式,报名参加AICODER的线下实习3个月模式的朋 ...
- [mvc] 过滤器filter一览
1.mvc的过滤器种类
- python学习小记
python HTTP请求示例: # coding=utf-8 # more materials: http://docs.python-requests.org/zh_CN/latest/user/ ...
- netty 对象序列化传输示例
package object.server.impl; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Chann ...
- xxl-job安装教程
xxl-job是一个开源的分布式调度框架,其他类似的框架还有airflow,oozie等等,需要进行对比 https://github.com/xuxueli/xxl-job 1.首先git clon ...