使用 python 3.3 生成并保存 .eml 文件

2023-11-27

我正在尝试使用标准电子邮件库生成电子邮件并将其保存为 .eml 文件。 我一定不明白 email.generator 是如何工作的,因为我不断收到错误“AttributeError:'str'对象没有属性'write'”。

from email import generator
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
active_dir = 'c:\\'

class Gen_Emails(object):
    def __init__(self):
        self.EmailGen()

    def EmailGen(self):
        sender = 'sender'
        recepiant = 'recipiant'
        subject = 'subject'

        msg = MIMEMultipart('alternative')
        msg['Subject'] = subject
        msg['From'] = sender
        msg['To'] = recepiant


        html = """\
        <html>
            <head></head>
            <body>
                <p> hello world </p>
            </body>
        </html>
        """
        part = MIMEText(html, 'html')

        msg.attach(part)

        self.SaveToFile(msg)

    def SaveToFile(self,msg):
        out_file = active_dir
        gen = generator.Generator(out_file)
        gen.flatten(msg)

有任何想法吗?


您应该将打开的文件(以写入模式)传递给Generator()。目前,您仅向其传递一个字符串,这就是为什么它在尝试调用时失败的原因.write()在绳子上。

所以做这样的事情:

import os
cwd = os.getcwd()
outfile_name = os.path.join(cwd, 'message.eml')

class Gen_Emails(object):    

    # ...

    def SaveToFile(self,msg):
        with open(outfile_name, 'w') as outfile:
            gen = generator.Generator(outfile)
            gen.flatten(msg)

Note: with open(outfile_name, 'w') as outfile打开路径中的文件outfile_name处于写模式并将文件指针分配给打开的文件outfile。退出后,上下文管理器还会为您关闭文件。with block.

os.path.join()将以跨平台的方式连接路径,这就是为什么您应该更喜欢它而不是手动连接路径。

os.getcwd()将返回您当前的工作目录。如果您希望将文件保存在其他地方,只需相应地更改它即可。

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

使用 python 3.3 生成并保存 .eml 文件 的相关文章

  • 用 Java 解析 RFC 2822 电子邮件地址

    许多人不知道 电子邮件地址需要一个库来解析 简单的正则表达式 例如 还不够 电子邮件地址甚至可以包含评论 其中可以包含诸如 破坏简单的正则表达式 有一个Node js 库 https github com baudehlo node add
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql

随机推荐

  • 如何在程序不做大改动的情况下实现undo/redo操作

    你好 我即将向我当前正在编写的应用程序添加新功能 我需要编写撤消 重做功能 然而 我们的应用程序 90 已经准备就绪 我不知道在不影响已创建的 太多 代码的情况下实现此功能的最佳方法是什么 这里没有太多细节 然而 撤消 重做功能通常是通过某
  • Angular - res.json() 不是函数

    我的 API 服务出现问题 该服务连接到我的 Nodejs 后端 api 错误说 ERROR TypeError res json is not a function 最近更新此服务以使用 HTTPClient 而不是 Http 后 我收到
  • 在 jenkins pipeline sh 步骤中使用嵌套命令替换

    我试图在归档之前使用指向相关内部文件夹的符号链接来展平结果目录 该文件夹首先遍历运行时确定的一堆变量路径名 我似乎不太能用我从这个SO中学到的命令替换方法来获得正确的语法answer 问题 是否存在我不知道的如何从 Jenkins 管道步骤
  • 引发事件(“onchange”)

    我有一个 winform 和一个WebBrowser控件 我正在更改选择 HTML 控件中的选项 webBrowser1 Document GetElementsByTagName select 4 GetElementsByTagName
  • HBITMAP 到 BITMAP 转换

    无法理解这段代码有什么问题 HBITMAP bm 0 BITMAP Bitmap bm HBITMAP LoadImage 0 path IMAGE BITMAP 0 0 LR LOADFROMFILE int error GetObjec
  • Mongodb 对象之间的关系

    我正在尝试使用 mongodb 实现博客文章存储 我有两个域实体 博客文章 和 作者 目前我已将 AuthorId 属性添加到博客文章实体中 这是存储对象之间关系的正确方法吗 我认为这篇文章适合你http www mongodb org d
  • 如何使用 CSS 在悬停时向图像添加工具提示

    我有三个图像 悬停时它们会使用 css 中的 hover 增加大小 当用户将鼠标悬停在图像上时 我还希望出现一个带有图像描述的工具提示 我还应该能够定位工具提示 HTML div class bottle container div cla
  • python calendar.HTMLCalendar

    我想我想使用 python 内置日历模块来创建带有数据的 HTML 日历 我说我认为是因为我可能会想出更好的方法 但现在这有点个人化 我不知道这是否是有意以这种方式使用的 但如果你不能至少让日子变得美好 那么这似乎有点毫无意义 a 这会设置
  • PHP 命名空间和 require

    我需要在主 index php 文件中包含几个文件 我正在使用命名空间 我可以使用 include require 并使文件使用与 index php 相同的命名空间 而不在每个包含的文件中指定命名空间和 use 语句吗 PHP 命名空间范
  • 在 TensorFlow 中对数组进行排序

    假设我在 TensorFlow 中有一个数组 0 12300211 0 51767069 0 13886075 0 55363625 0 47279349 0 50432992 0 48080254 0 51576483 0 8434793
  • 使用 Jasmine 监视没有对象的函数

    我正在使用 Jasmine 并且有一个库 js 文件 其中包含许多不与任何对象关联的函数 即全局函数 我该如何监视这些功能 我尝试使用窗口 文档作为对象 但即使调用该函数 间谍也无法工作 我还尝试将其包装在一个假对象中 如下所示 var f
  • 如何避免单击按钮时的 Page_Load() ?

    我有两个按钮 预览和保存 借助预览按钮 用户可以根据格式查看数据 然后保存 但是 当单击预览时 附加到 ajaxcontrol 日历 的一个文本框将变为空 用户必须在保存之前填写日期 这要怎么处理呢 在预览时单击我获取详细信息以在布局中显示
  • Python 中的按键

    Is it possible to make it appear to a system that a key was pressed for example I need to make A key be pressed thousand
  • 使用 hadoop 运行 jar 时 NoSuchMethodError Sets.newConcurrentHashSet()

    我在用着cassandra all 2 0 7api 与Hadoop 2 2 0
  • 使用zef安装模块后如何编辑模块中的源代码?

    例如 我已经安装了Cro模块 当我运行我的简单代码时 my headers Authorization gt OAuth realm oauth consumer key xxxxxxxxxxxxxxxx oauth nonce 29515
  • 将数组写入 csv python(一列)

    我正在尝试将数组的值写入 python 中的 csv 文件 但是当我在Excel中打开文件时 数据显示在一行中 我想要一列 其中数组的每个成员都是一行 数组 testLabels 的形式为 array deer airplane dog f
  • 如何在 Jekyll 标签插件中获取 Markdown 处理过的内容

    我正在为我的 Octopress 网站开发 Jekyll 标签插件 以帮助我制作 注释 元素 我只是希望能够在我的博客上突出显示一条信息作为旁注 就像这样 问题是 我不知道如何处理此标签的内容 即 Markdown 或 Textile 上面
  • c 中的外部和全局

    谁能告诉我使用有什么特殊要求吗EXTERN or GLOBALC 程序中的变量 如果我从 gloabl 更改为 extern 我看不出像下面这样的程序有任何区别 include
  • 获取流式hadoop程序中的输入文件名

    在用 Java 编写程序时 我可以使用 FileSplit 找到映射器类中的输入文件的名称 当我用Python编写程序 使用流式传输 时 是否有相应的方法可以做到这一点 我在apache上的hadoop流媒体文档中发现了以下内容 请参阅配置
  • 使用 python 3.3 生成并保存 .eml 文件

    我正在尝试使用标准电子邮件库生成电子邮件并将其保存为 eml 文件 我一定不明白 email generator 是如何工作的 因为我不断收到错误 AttributeError str 对象没有属性 write from email imp