前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python利用smtp来发送邮件(带附件)

python利用smtp来发送邮件(带附件)

作者头像
V站CEO-西顾
发布于 2018-06-17 04:10:02
发布于 2018-06-17 04:10:02
1.3K0
举报
文章被收录于专栏:V站V站

V站笔记

运行环境:python2.7python3.x的话,把代码中的中文的字符前的u去掉就好,这是2与3基本的区别

  1. # -*- coding: utf-8 -*-
  2. import smtplib
  3. import email.MIMEMultipart  # import MIMEMultipart
  4. import email.MIMEText  # import MIMEText
  5. import email.MIMEBase  # import MIMEBase
  6. import os.path
  7. import mimetypes
  8. import datetime
  9. import os
  10. from email.header import Header
  11. # today = datetime.date.today()
  12. # yesterday = today - datetime.timedelta(days=1)
  13. From = "%s <*****>" % Header("xxx","utf-8") # 发送邮箱,*****是发送来源的邮箱,xxx是发送邮件时候的标题,
  14. To = " ###"  # 接受邮件的邮箱
  15. file_name = "***"   # 附件名(带路径)
  16. server = smtplib.SMTP_SSL("smtp.exmail.qq.com", 465)
  17. server.login("*****", "password or 授权码")  # 仅smtp服务器需要验证时
  18. # 构造MIMEMultipart对象做为根容器
  19. main_msg = email.MIMEMultipart.MIMEMultipart()
  20. # 构造MIMEText对象做为邮件显示内容并附加到根容器
  21. important = """
  22. 这里面写内容
  23. """
  24. text_msg = email.MIMEText.MIMEText("这是内容的标题" + '\n' + important, _charset="utf-8")
  25. text_msg["Accept-Language"] = "zh-CN"
  26. text_msg["Accept-Charset"]="ISO-8859-1,utf-8"
  27. main_msg.attach(text_msg)
  28. # 设置有中文的字符串,在微软的outlook中乱码,所以才有了上面对中文的设置
  29. # 构造MIMEBase对象做为文件附件内容并附加到根容器
  30. ## 读入文件内容并格式化 [方式1]------------------------------
  31. data = open(file_name, 'rb')
  32. ctype, encoding = mimetypes.guess_type(file_name)
  33. if ctype is None or encoding is not None:
  34.     ctype = 'application/octet-stream'
  35. maintype, subtype = ctype.split('/', 1)
  36. file_msg = email.MIMEBase.MIMEBase(maintype, subtype)
  37. file_msg.set_payload(data.read())
  38. data.close()
  39. email.Encoders.encode_base64(file_msg)  # 把附件编码
  40. ## 设置附件头
  41. basename = os.path.basename(file_name)
  42. file_msg.add_header('Content-Disposition', 'attachment', filename=basename)  # 修改邮件头
  43. main_msg.attach(file_msg)
  44. # 设置根容器属性
  45. subject = u" 邮件标题"
  46. if not isinstance(subject,unicode):
  47.     subject = unicode(subject)
  48. main_msg['From'] = From
  49. main_msg['To'] = To
  50. main_msg['Subject'] = subject
  51. main_msg['Date'] = email.Utils.formatdate()
  52. # 得到格式化后的完整文本
  53. fullText = main_msg.as_string()
  54. # print('发送成功')
  55. # 用smtp发送邮件
  56. try:
  57.     server.sendmail(From, To, fullText)
  58. finally:
  59.     server.quit()

温馨提示

如果想要做个定时的话,可以借助cronjob实现,具体方式不做多说

本文系转载,前往查看

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

本文系转载,前往查看

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

评论
登录后参与评论
暂无评论
推荐阅读
新型web框架Astro快速构建内容网站
Astro 是集多功能于一体的 Web 框架,用于构建快速、以内容为中心的网站,可集成Vue、React、Tailwind、Svelte等多种前端框架,可快速构建个人博客、文档网站和公司官网等内容网站
Petrochor
2023/04/01
3.3K0
新型web框架Astro快速构建内容网站
🚀🚀🚀Astro:一个可以同时写React、Vue、Svelte、SolidJS等多种语言的框架
Astro 是「集多功能于一体的 Web 框架」,用于构建「快速、以内容为中心」的网站。
萌萌哒草头将军
2023/08/31
1.5K0
🚀🚀🚀Astro:一个可以同时写React、Vue、Svelte、SolidJS等多种语言的框架
astro
在前端框架百花齐放的今天,React、Vue、Svelte 等已经牢牢占据开发者的视野。而 Astro,则以一种“反潮流”的方式切入了战场——它不试图成为全能框架,而是专注于一个核心场景:内容驱动的静态网站。
阿超
2025/03/27
1000
使用Astro、Qwik 和 Fuse.js构建网站搜索
利用 Astro 的内容集合、静态端点和 Qwik 的 Astro 集成以及 Fuse.js,构建网站搜索功能的方法。
云云众生s
2024/03/28
1820
使用Astro、Qwik 和 Fuse.js构建网站搜索
Astro,你真的值得试试……
上周我写了一篇关于我对 Next.js 的失望的文章。不过我接下来希望写点正能量的内容,那必须是我最喜欢的 Astro 了。
ssh_晨曦时梦见兮
2023/10/14
5350
使用vue构建企业级应用步骤
在main.js中导入babel-polyfill 以便旧版浏览器中可以使用新的js特性
lilugirl
2019/12/16
7650
一个现代静态网站生成器Eleventy
我们展示了Eleventy如何提供一种流畅的Web开发过程,与现有技术协同工作,同时引导您采用良好的实践。
云云众生s
2024/03/28
1840
一个现代静态网站生成器Eleventy
06 . Vue路由简介,原理,实现及嵌套路由,动态路由,编程式导航
基于URL的hash实现(点击菜单的时候改变URL的hash,根据hash的变化控制组件的切换)
iginkgo18
2020/11/24
2K0
06 . Vue路由简介,原理,实现及嵌套路由,动态路由,编程式导航
Blazor学习之旅(7)布局
Blazor 中的布局可以让我们编写的页面具有相同的导航菜单和页头页脚部分,提高通用代码的复用性,通过一次性的编写通用代码从而减少重复劳动。
Edison Zhou
2023/07/31
4640
Blazor学习之旅(7)布局
Blade 模板引擎进阶篇
除了基本的数据渲染及控制结构指令之外,Blade 还提供了模板继承和组件引入功能,从而允许视图模板之间继承、覆盖及引入。
学院君
2020/10/30
3.9K0
Blade 模板引擎进阶篇
从零开始使用create-react-app + react + typescript 完成一个网站
也许有人咋一看,看到这个网站有些熟悉,没错,这个网站来源于jsisweird.com/。我花了三天时间,用 create-react-app + react + typescript 重构这个网站,与网站效果不同的是,我没有加入任何的动画,并且我添加了中英文切换以及回到顶部的效果。
陈大鱼头
2021/10/09
1.7K0
从零开始使用create-react-app + react + typescript 完成一个网站
Astro.js 中集成 Vue 框架教程
Astro的集成能力支持我们使用Vue3编写的组件,并且支持SSR(server-side rendering)和CSH(client-side hydration)
泯泷、
2024/03/17
4680
Astro.js 中集成 Vue 框架教程
HTML入门完全指南:从零开始构建你的第一个网页
每个网页都会有一个基本的结构标签(也称为骨架标签),页面内容也是在这些基本标签上写
IsLand1314
2025/03/08
6880
HTML入门完全指南:从零开始构建你的第一个网页
用 Gatsby 创建一个博客
Gatsby 是一个令人难以置信的静态站点生成器,它允许使用React作为渲染引擎引擎来搭建一个静态站点,它真正具有现代web应用程序所期望的所有优点。它通过在构建时通过服务器端渲染将动态的 react 组件呈现为静态 HTML 内容。这意味着您的用户可以获得静态站点的所有好处,比如不使用JavaScript、搜索引擎友好性、非常快的加载速度等等,也并没有失去现代web所期望的活力和交互性。一旦呈现为静态 HTML,客户端站点的React和JavaScript会接管它并添加动态的内容。 Gatsby 最近发布了v1.0.0,推出了很多新特性。包括(但不限于)使用GraphQL创建内容查询的能力,与各种cms集成——包括WordPress、Contentful、Drupal等等。还有基于路由的代码分布使得用户体验更佳。在这篇文章中,我们将深入探讨 Gatsby 和一些新特性,并创建一个静态博客。让我们开始吧!
疯狂的技术宅
2019/03/27
2.7K0
用 Gatsby 创建一个博客
前后端分离之vue2.0+webpack2 实战项目 -- html模板拼接
对于前后端分离,如何把一个页面的公共部分比如head, header, footer, content等组合成一个完整的html 是一个值得考虑的地方。 对于php,我们可以利用include加载其他页面,像yii框架,可以利用render将输出的内容嵌入到父模板,从而形成一个完整的页面。 那对于纯静态的html我们如何拼接呢? 可以想到市面上的多种模板引擎,比如artTemplate, doT, ejs等,他们可以使用require或include等特殊标记的语法来引入其他模块。但如果每个页面我们都去写若
smy
2018/04/03
1.6K0
前后端分离之vue2.0+webpack2 实战项目 -- html模板拼接
Astro 3.0 闪亮登场,让你轻松构建更快速、更流畅的前端应用
网站前端开发的领域不断演进,随着Astro 3.0的发布,它正在迈出巨大的一步。Astro 3.0引入了突破性的功能和增强功能,承诺改变我们构建和体验网络应用程序的方式。在本文中,我们将探讨Astro 3.0的主要亮点以及如何赋予开发人员创建更快、更引人入胜和视觉上令人惊叹的网络体验的能力。
前端达人
2023/09/11
4980
Astro 3.0 闪亮登场,让你轻松构建更快速、更流畅的前端应用
2018年laravel教程第1节搭建项目phpstorm添加laravel代码提示新建路由和控制器渲染页面定义公共模板文件公共头部和底部小结
PHP框架哪家强?这个问题估计得让PHPer撕起来,别的指标不说,仅从github的受欢迎程度来讲,laravel当之无愧是榜首:
章鱼喵
2018/08/02
2.2K0
2018年laravel教程第1节搭建项目phpstorm添加laravel代码提示新建路由和控制器渲染页面定义公共模板文件公共头部和底部小结
Jekyll 优化合集
  Jekyll 是一款采用 Ruby 语言编写的、非常方便简单又功能强大的静态站点生成器,适合于搭建个人博客、静态网站等。我们知道,Github Page 默认支持的也是 Jekyll,而非 Hexo、Hugo等静态站点生成器。Hexo 是用 NodeJS 语言编写的,Hugo 是用 Go 语言编写的,它们三者背后其实都有非常丰富的插件来增强它们自身,从而为用户提供一个可插拔式的个人定制功能。由于本站目前是采用 Jekyll 来搭建的,所以为了提供给读者更加高效的阅读条件,笔者在廖柯杰大佬开发的 H2O 主题的基础上做了一些功能上的增加和优化,接下来就来详细介绍一下。
zhonger
2022/10/28
2.2K0
从零开始学 Web 之 Vue.js(六)Vue的组件
在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!
Daotin
2018/09/30
2.4K0
从零开始学 Web 之 Vue.js(六)Vue的组件
用Publish创建博客(二)——主题开发
在Swift社区中,有不少优秀的项目致力于使用Swift生成HTML:比如Vapor的Leaf[4],Point-Free的swift-html[5]等,Plot也是其中的一员。Plot最初是由John Sundell[6]编写的并作为Publish套件的一部分,它主要的关注点是Swift的静态网站HTML生成,以及创建建站所需的其他格式文档,包括RSS、podcast、Sitemap。它与Publish紧密集成但同时也作为一个独立项目存在。
东坡肘子
2022/07/28
1.3K0
用Publish创建博客(二)——主题开发
推荐阅读
相关推荐
新型web框架Astro快速构建内容网站
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档