如何在 Python 中将 pdf 文件附加到 MIME 电子邮件?

2024-05-21

我正在制作一个自动邮件发送程序(Python 3.6.1)用于电子邮件营销。我在附加 PDF 文件时遇到问题。邮件中的 PDF 文件的文件名和页数是正确的,但 PDF 文件始终为空白,并且其大小增加。我尝试了三种不同的方法,其他两种方法不起作用。最后我决定在这里问。感谢您的帮助。

message = MIMEMultipart()
message['Subject'] = "Attachment Test"
message['From'] = 'myemail'
message['Reply-to'] = 'myemail'
message['To'] = 'otheremail'

text = MIMEText("Message Body")
message.attach(text)

directory = "C:\ExamplePDF.pdf"
with open(directory, encoding = 'utf-8', errors = 'replace') as opened:
    openedfile = opened.read()
attachedfile = MIMEApplication(openedfile, _subtype = "pdf", _encoder = encode_base64)
attachedfile.add_header('content-disposition', 'attachment', filename = "ExamplePDF.pdf")
message.attach(attachedfile)

server = SMTP("smtp.gmail.com:587")
server.ehlo()
server.starttls()
server.login("myemail", "password")
server.sendmail(message['From'], message['To'], message.as_string())
server.quit()

(答案取自评论)
以二进制模式读取 PDF:
with open("file.pdf", "rb") as opened:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 中将 pdf 文件附加到 MIME 电子邮件? 的相关文章

随机推荐

  • Bash 脚本:自动为 mpeg-dash 进行 ffmpeg 编码

    我正在编写一个 bash 文件来创建视频编码和串联 以供 dash 实时流媒体使用 基本上 它读取输入视频文件夹 将所有视频编码为三种分辨率格式 然后将它们连接起来创建三个适应集 DIAGRAM 该脚本检查 fps 一致性 如果输入不是 1
  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 我的CSS出了什么问题?活动链接不改变颜色

    我无法让我的 WordPress 菜单活动链接保持红色 我添加了我认为与导航相关的 CSS 还有正文等 以防影响问题 感谢您的帮助 body font family Helvetica Neue sans serif font size 1
  • 错误“没有可用于此声明的持久卷,并且未设置存储类别”

    是需要在nodes中手动创建目录还是pv自动创建 这是我的 pv 和 pvc 文件 我看到这个错误 没有可用于此声明的持久卷 并且未设置存储类别 如何解决这个问题 kind PersistentVolume apiVersion v1 me
  • 从 Angular 4 中的选择选项获取价值

    如何从 Angular 4 中的 select 选项获取值 我想将它分配给 component ts 文件中的一个新变量 我已经尝试过但没有输出任何内容 你也可以使用 ngModel 来做到这一点吗 组件 html
  • Android 中有没有办法获取 SD 卡大小?

    欢迎大家 我已经在 Stackoverflow 和 google 上尝试过与此相关的每个问题 但没有一个有效 我已经尝试过类似下一个链接的操作 但它返回的内容与内部存储相同 如何获取外部存储 SD 卡的大小 带安装的 SD 卡 https
  • 在 .NET 并发线程之间传递数据的最佳方式是什么?

    我有两个线程 一个需要轮询一堆单独的静态资源以查找更新 另一种需要获取数据并将其存储在数据库中 线程1如何告诉线程2有东西要处理 如果数据块是独立的 则将数据块视为要由线程池处理的工作项 使用线程池和QueueUserWorkItem将数据
  • 如何在 Windows 64 上安装 NumPy?

    NumPy 安装程序在注册表中找不到 python 路径 无法安装 需要 Python 2 5 版本 但在注册表中未找到该版本 OK 我必须修改注册表吗 我已经修改了 PATH 以指向Python25安装目录 我可以检查一下您使用的是什么安
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • OAuth2.0 redirect_uri 的参数值无效:缺少方案

    我正在将 Oauth 2 0 流程用于部署在 GCP 中的 appengine Web 应用程序 我正在使用 IAP 我有一个使用 Cloud KMS 加密的有效 cliend secret 文件 但我遇到了以前没有的错误 oauthlib
  • 扫描 PHP 上传的病毒

    我目前正在使用以下代码来扫描作为申请表的一部分上传的文件 safe path escapeshellarg dir file command usr bin clamscan stdout safe path out int 1 exec
  • 有没有办法让 React 为孩子自动定义“键”?

    我正在学习 React 我偶然发现了 动态儿童 的这个怪癖 带有代码示例的序言 Render Pass 1
  • 使用中断选项顺序执行函数

    我的操作系统中有一个线程 它以固定的时间间隔被调用 然后顺序执行 10 15 个不同函数的列表 每个函数都有一个返回参数 该参数要么为 0 正常 要么为非 0 错误 看起来像这样 while 1 error function 1 error
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • C# using 语句是否执行 try/finally ?

    假设我有以下代码 private void UpdateDB QuoteDataSet dataSet Strint tableName using SQLiteConnection conn new SQLiteConnection co
  • 参考新 CSPROJ 格式的 GAC 程序集?

    我使用的是 Visual Studio 2019 预览版 2 1 我有一个 NET Framework 4 6 1 类库 C 项目 其中有一些采用旧 csproj 项目格式 ToolsVersion 15 0 的 Azure 引用 这个旧的
  • Twitter Bootstrap 中的五个相等的列

    我想在我正在构建的页面上有 5 个相等的列 但我似乎无法理解这里如何使用 5 列网格 http web archive org web 20120416024539 http domain7 com mobile tools bootstr
  • 如何淡化循环背景图像?

    这里的菜鸟 我试图让我的静态背景变成一个轮播 我当前的html看起来像这样 div class pageContent div 和我的CSS body background url http placehold it 1600x1200 n
  • 如何在 Python 中将 pdf 文件附加到 MIME 电子邮件?

    我正在制作一个自动邮件发送程序 Python 3 6 1 用于电子邮件营销 我在附加 PDF 文件时遇到问题 邮件中的 PDF 文件的文件名和页数是正确的 但 PDF 文件始终为空白 并且其大小增加 我尝试了三种不同的方法 其他两种方法不起