代码:

 1 # -*- coding: utf-8 -*-
2
3 import smtplib, ssl
4 from email.mime.text import MIMEText
5 from email.mime.multipart import MIMEMultipart
6
7
8 def send_email_with_custom_smtp(sender_email, receiver_email, server, port, usr, password, subject, text, html,
9 annex_path):
10 # mail gun exception, switch to port 465
11 # see: https://stackoverflow.com/questions/57715289/how-to-fix-ssl-sslerror-ssl-wrong-version-number-wrong-version-number-ssl
12 if server == 'smtp.mailgun.org':
13 port = 465
14
15 message = MIMEMultipart("alternative")
16 if annex_path is not None:
17 for k in annex_path:
18 attach = MIMEText(k['annexContent'], 'base64', 'utf-8')
19 attach["Content-Type"] = 'application/octet-stream'
20 attach.add_header('Content-Disposition', 'attachment', filename='{}'.format(k['annexName']))
21 message.attach(attach)
22 else:
23 pass
24 message["Subject"] = subject
25 message["From"] = sender_email
26 message["To"] = receiver_email
27
28 # Turn these into plain/html MIMEText objects
29 part1 = MIMEText(text, "plain")
30 part2 = MIMEText(html, "html")
31
32 # Add HTML/plain-text parts to MIMEMultipart message
33 # The email client will try to render the last part first
34 message.attach(part1)
35 message.attach(part2)
36
37
38 # Create a secure SSL context
39 context = ssl.create_default_context()
40 with smtplib.SMTP_SSL(server, port, context=context) as server:
41 if int(port) == 587:
42 server.starttls(context=context)
43 try:
44 server.login(usr, password)
45 except:
46 raise ValueError('登录失败,请检查邮箱用户名与密码(授权码)是否正确')
47 try:
48 server.sendmail(
49 sender_email, receiver_email, message.as_string()
50 )
51 return '邮件发送成功。', True
52 except:
53 return '邮件发送失败', False

python3.7发送邮件带附件的更多相关文章

  1. Java发送邮件(带附件)

    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...

  2. centos 使用mutt发送邮件带附件

    1.安装mutt工具 yum install -y mutt 2.使用mutt发邮件并带附件echo "统计日志" | /usr/bin/mutt -s "统计日志&qu ...

  3. 使用System.Net.Mail中的SMTP发送邮件(带附件)

    System.Net.Mail 使用简单邮件传输协议SMTP异步发送邮件 想要实现SMTP发送邮件,你需要了解这些类 SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例. ...

  4. python 发送邮件 带附件

    # coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/5/26' # __Desc__ = 实现发送带有各种附件类型的邮件 ...

  5. java发送邮件带附件

    package com.smtp; import java.util.Vector; public class MailBean { private String to; // 收件人 private ...

  6. Python发送邮件(带附件的)

    有时候做自动化测试任务,任务完成后,需要将结果自动发送一封邮件,这里用到smtplib模块,直接导入就行,这里以163邮箱为例,需要用到授权码,我用类写一下: 如果是发送qq邮箱,要将smtp 改成s ...

  7. VC++ 使用ShellExecute函数调用邮箱客户端发送邮件(可以带附件)

      之前写过一篇博文,通过MAPI实现调用邮箱客户端发送邮件带附件,当时对ShellExecute研究不深,以为ShellExecute不能带附件,因为项目需求原因(MAPI只能调用Foxmail和O ...

  8. php中PHPMailer发送带附件的电子邮件方法

    摘要: 本文讲的是php中PHPMailer发送带附件的电子邮件方法, .首先到http://phpmailer.worxware.com/ 下载最新版本的程序包 2.下载完成后,找到class.ph ...

  9. Java 阿里云 邮件(带附件)发送

    简单的使用. 阿里云每天免费200封 1000封才2块钱..465端口 使用正常25 端口 不正常 package com.gwzx.framework.utils; import java.util ...

随机推荐

  1. springboot整合多数据源解决分布式事务

    一.前言        springboot整合多数据源解决分布式事务.             1.多数据源采用分包策略              2.全局分布式事务管理:jta-atomikos. ...

  2. C# WPF 后台调整怎样使用代码把指定控件的Z序调整到最前面呢?

    Panel.SetZIndex(rectangle1, 2); //把前台名称为rectangle1的矩形的ZIndex设置为2

  3. 【java虚拟机】jvm调优

    转自:https://www.cnblogs.com/starhu/p/6400348.html?utm_source=itdadao&utm_medium=referral 堆大小设置JVM ...

  4. Commons-Collections(一)之list

    Bag Bag继承自Collection接口,定义了一个集合,该集合会记录对象在集合中出现的次数. 假设你有一个包,包含{a, a, b, c}.调用getCount(a)方法将返回2,调用uniqu ...

  5. 【nodejs】express框架+mysql后台数据查询

    一 环境部署 1,首先安装nodejs,并配置好环境变量(看自己习惯), 2,安装Express npm install express -g //全局安装 npm install express-g ...

  6. CSS基本语法(慕课网学习笔记)

    CSS的声明,内外联样式以及CSS的优先级 css学习.html <!DOCTYPE html> <html lang="en"> <head> ...

  7. ElasticSearch之配置文件详解

    ################################### Cluster ################################### #定义集群名称,默认是elasticse ...

  8. 细说Typescript类型检查机制

    上一篇文章我介绍了Typescript的基础知识,回顾一下,有基础数据类型.数组.函数.类.接口.泛型等,本节内容将述说一下Typescript为方便我们开发提供了一些类型检查机制. 类型检查机制 类 ...

  9. 30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)

    前言 本文以前端面试官的角度出发,对 Vue 框架中一些重要的特性.框架的原理以问题的形式进行整理汇总,意在帮助作者及读者自测下 Vue 掌握的程度.本文章节结构以从易到难进行组织,建议读者按章节顺序 ...

  10. tensorflow1.12 queue 笔记

    主要参考:https://www.tensorflow.org/api_guides/python/threading_and_queues#Queue_usage_overview 自动方式 For ...