代码:

 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. 【AI】Pytorch_LearningRate

    From: https://liudongdong1.github.io/ a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦 ...

  2. DataTable 读取每一行的内容

    foreach (DataRow item in dataTable.Rows) { for (int i = 0; i < dataTable.Columns.Count; i++) { Co ...

  3. Vue实现在前端导出Excel 方法2

    也可以去看下我的方法1:https://www.cnblogs.com/yingyigongzi/p/10915382.html ----------------------------------- ...

  4. 【springcloud】Zuul高级配置(zuul--3)

    转自:https://blog.csdn.net/pengjunlee/article/details/87285673 为路由提供HystrixFallback 当Zuul中某一个路由的断路器被断开 ...

  5. SpringBoot学习之thymeleaf的使用

    thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引人的特点: 1 ...

  6. IDEA 创建Maven Web工程

    一.Maven环境搭建 二.Maven常用命令 mvn clean 清除生成的target文件 mvn install 生成target文件 mvn clean install 相当于先删除targe ...

  7. mysql 8.0 1405的坑

    因版本差异:password  可能对应:authentication_string字段 不行的话再尝试一下,并且修改下密码类型 ALTER USER 'root'@'%' IDENTIFIED WI ...

  8. Python 脚本的执行

    源文件如下,文件名test.py,其中UTF-8根据实际情况而定,Python3默认为UTF-8,所以不用设置: #!/usr/bin/python # -*- coding: UTF-8 -*- p ...

  9. TCP连接中的状态

    1. 正常状态转换 我们用图 3-13 来显示在正常的 TCP 连接的建立与终止过程中,客户与服务器所经历的不同状态.读者可以对照图 3-12 来阅读,使用图 3-12 的状态图来跟踪图 3-13 的 ...

  10. C++模板简介

    模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有两种形式:函 ...