返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python如何实现发送带附件的电子邮件
  • 669
分享到

详解Python如何实现发送带附件的电子邮件

Python发送带附件邮件Python发送邮件Python邮件 2023-05-15 08:05:37 669人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件

Python SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:runoob.com,这个是可选参数。

port: 如果你提供了host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。

local_hostname:如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP对象使用sendmail方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。

导入模块如果没有错误,表示已经安装成功。

Python发送带附件的电子邮件基本思路如下:

1.构造MIMEMultipart对象做为根容器

2.构造MIMEText对象做为邮件显示内容并附加到根容器

3.构造MIMEBase对象做为文件附件内容并附加到根容器

a. 读入文件内容并格式化

b. 设置附件头

4.设置根容器属性

5.得到格式化后的完整文本

6.用smtp发送邮件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os

# 配置邮箱服务器信息
mail_host = "smtp.qq.com"   # 设置服务器
mail_user = "823634900"     # 用户名
mail_pass = "gfgwmfbzmutebajc"  # 口令是授权码,不是邮箱密码

# 配置发件人、收件人信息
sender = '823634900@qq.com' # 发件人邮箱
receivers = ['823634900@qq.com']  # 接收邮件,可设置为多个邮箱


def message_config():
    """
    配置邮件信息
    :return: 消息对象
    """
    # 第三方 SMTP 服务
    content = MIMEText('测试数据,注意查收')
    message = MIMEMultipart() # 多个MIME对象
    message.attach(content)  # 添加内容
    message['From'] = Header("白云", 'utf-8') # 发件人
    message['To']   = Header("黑土", 'utf-8')  # 收件人
    message['Subject'] = Header('测试数据', 'utf-8') # 主题
    # 添加excel类型附件
    file_name = 'output.xlsx' # 文件名
    file_path = os.path.join(file_name)        # 文件路径
    xlsx = MIMEApplication(open(file_path, 'rb').read())  # 打开Excel,读取Excel文件
    xlsx["Content-Type"] = 'application/octet-stream'     # 设置内容类型
    xlsx.add_header('Content-Disposition', 'attachment', filename=file_name) # 添加到header信息
    message.attach(xlsx)
	# jpg类型的附件
    #jpgpart = MIMEApplication(open('beauty.jpg', 'rb').read())
    #jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')
    #message.attach(jpgpart)

    # mp3类型的附件
    #mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())
    #mp3part.add_header('Content-Disposition', 'attachment', filename='kenny.mp3')
    #message.attach(mp3part)
 
    # pdf类型附件
    #part = MIMEApplication(open('foo.pdf', 'rb').read())
    #part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")
    #message.attach(part)
    
    return message
    

def send_mail(message):
    """
    发送邮件
    :param message: 消息对象
    :return: None
    """
    try:
        smtpObj = smtplib.SMTP_SSL(mail_host) # 使用SSL连接邮箱服务器
        smtpObj.login(mail_user, mail_pass)   # 登录服务器
        smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件
        print("邮件发送成功")
    except Exception as e:
        print(e)

if __name__ == "__main__":
    print("开始执行")
    message = message_config() # 调用配置方法
    send_mail(message)         # 发送邮件
    print("执行结束")

相信看到535报错的同学代码编写方面都没有问题,只是不明白为什么填写了帐号密码后还是报535错误,这里我以163和QQ邮箱为例,并使用Python讲解怎么解决535问题

关于发邮件报错535 Error:authentication failed解决方法:

报错:535, b’Login Fail. Please enter your authorization code to login.

解决办法:

调用邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时需要我们设置客户端授权码,这个授权码替代上面代码部分的mail_pass 即可成功发送邮件

到此这篇关于详解Python如何实现发送带附件的电子邮件的文章就介绍到这了,更多相关Python发送带附件邮件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Python如何实现发送带附件的电子邮件

本文链接: https://lsjlt.com/news/208480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Python如何实现发送带附件的电子邮件
    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件...
    99+
    2023-05-15
    Python发送带附件邮件 Python发送邮件 Python 邮件
  • Python如何实现发送带有pdf附件的电子邮件
    这篇文章主要介绍“Python如何实现发送带有pdf附件的电子邮件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现发送带有pdf附件的电子邮件”文章能帮助大家解决问题。一、如何使用...
    99+
    2023-07-05
  • GoLang:无法发送带附件的电子邮件
    php小编草莓今天给大家分享一篇关于GoLang的问题:无法发送带附件的电子邮件。在日常开发中,发送带附件的电子邮件是一个常见需求,但有时候我们会遇到一些问题。本文将介绍如何解决这个问...
    99+
    2024-02-11
  • 如何在 vb.net 中发送带有附件的电子邮件
    在 VB.NET 中,你可以使用 `System.Net.Mail` 命名空间中的 `MailMessage` 类来创建和发送带附件...
    99+
    2023-09-26
    vb.net
  • python发送带附件的邮件
      来源:http://snipperize.todayclose.com/snippet/py/Send-email-with-p_w_upload--53762/ Send email with p_w_upload import sm...
    99+
    2023-01-31
    附件 邮件 python
  • 如何用Python发送带有附件的邮件
    如何用Python发送带有附件的邮件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python 发送带有附件的邮件条件使用from django.core.ma...
    99+
    2023-06-02
  • Java如何实现带附件的邮件发送功能
    这篇文章主要讲解了Java如何实现带附件的邮件发送功能,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。需要导入mail.jar、activation.jar这两个邮件发送的jar包,可在网上搜索并下载需要设置相关...
    99+
    2023-05-31
    java ava
  • Java实现发送邮件并携带附件
    本文实例为大家分享了Java实现发送邮件并携带附件的具体代码,供大家参考,具体内容如下 一、 邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器。主要负责接收用户...
    99+
    2024-04-02
  • java发送邮件带附件怎么实现
    在Java中发送带附件的邮件可以使用JavaMail API来实现。以下是一个示例代码: import java.util.Prop...
    99+
    2024-02-29
    java
  • Android实现带附件的邮件发送功能
    本文实例讲解了基于基于JMail实现Android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点...
    99+
    2022-06-06
    邮件 Android
  • SpringBoot实现发送电子邮件
    目录1. 前言1.1 电子邮件发展史1.2 电子邮件原理1.3 电子邮件地址的构成1.4 电子邮件传输协议2. 实现发送电子邮件3. 码农来洞见1. 前言 电子邮件是—种...
    99+
    2024-04-02
  • C#实现SMTP邮件附件发送功能详解
    目录实践过程效果代码实践过程 效果 代码 public partial class frmSend : Form { public frmSend() { ...
    99+
    2022-12-28
    C# SMTP邮件附件发送 C# SMTP邮件发送 C# 邮件发送
  • Java怎么实现批量发送带附件的邮件
    这篇文章主要讲解了“Java怎么实现批量发送带附件的邮件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么实现批量发送带附件的邮件”吧!实体类(注意注释)代码详情如下:package...
    99+
    2023-06-22
  • Java实现批量发送带附件的邮件代码
    目录前言实体类(注意注释)实现类 方法中调用,详情如下:总结前言        新功能上线时要经常发包到测试或生产服务器进行模块部署...
    99+
    2024-04-02
  • vbs如何实现sendmail发邮件带附件
    小编给大家分享一下vbs如何实现sendmail发邮件带附件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!NameSpace = "...
    99+
    2023-06-08
  • python实现发送邮件及附件功能
    今天给大伙说说python发送邮件,官方的多余的话自己去百度好了,还有一大堆文档说实话不到万不得已的时候一般人都不会去看,回归主题: 本人是mac如果没有按照依赖模块的请按照下面的截图安装 导入模块如果没...
    99+
    2022-06-04
    发送邮件 附件 功能
  • Python中Django发送带图片和附件的邮件
    最近需要做集团的SRC系统。暂无安全研发,所以只能找我这个小菜兼职开发。系统使用Django框架,在整个过程中,有许多奇特的需求。在某项需求中,需要给厂商用户发送富文本邮件,漏洞详情,这个折腾了一下,感觉略...
    99+
    2022-06-04
    附件 邮件 图片
  • autojs使用intent发送邮件带附件实现示例
    目录正文环境正文 小米自带邮箱: 附件, 标题, 内容 这三个正常, 收件人为空; QQ邮箱: 全部正常 因此, 我给intent设置了QQ邮箱的包名 function sendE...
    99+
    2023-01-18
    autojs intent发邮件 autojs intent
  • 怎么用vbs发送带附件的邮件
    这篇文章主要介绍了怎么用vbs发送带附件的邮件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。function Send_mail(You_Account,You_P...
    99+
    2023-06-08
  • 如何使用 PHP 发送电子邮件?
    在 php 中使用 swift mailer 发送电子邮件,需要安装 swift mailer、配置 smtp 服务器、创建邮件消息、创建邮件发送器,最后发送邮件。具体步骤包括:安装 s...
    99+
    2024-04-20
    php 发送电子邮件 composer
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作