python - 在 Python 中使用的高级邮件

标签 python python-2.7 email python-webbrowser

我正在尝试使用 Python 中的自定义收件人、主题和正文发送一封电子邮件。
这意味着我不想使用 Python's smtp packages , 但类似于 webbrowser因为我需要这个来打开带有上述参数的默认电子邮件客户端(在我的例子中是 Thunderbird)。

import webbrowser
webbrowser.open("mailto:?to=aaa@email.com&subject=mysubject", new=1)

有效,但我需要它从我之前找到的字符串中获取收件人,并从我之前创建的文本文件中获取正文。

有没有我找不到的“简单”方法?
提前致谢。

最佳答案

我使用变量 收件人主题 存储相对值。只需将单引号之间的示例文本替换为您的实际值。

recipient = 'emailaddress'
subject = 'mysubject'

主题字段不能包含空格,因此必须使用 %20 ASCII 码对它们进行 url 编码
subject = subject.replace(' ', '%20')

上面的函数将空格替换为“%20”,并将修改后的主题分配给相同的变量,因为您可以重复使用它,在这种情况下您真的不需要另一个。

也可以使用 urllib 用于 url 编码的模块(参见 urllib.urlencode() 方法),但可以简单地使用 来完成替换() 方法,这样您就可以避免为此导入另一个模块。

现在您需要从文本文件中加载文本并将其存储在变量中。
假设您有一个名为 的文本文件。正文.txt :
with open('body.txt', 'r') as b:
    body = b.read()

请注意,我假设 正文.txt 位于 Python 脚本的同一目录中,否则在 filename 参数中,您必须包含文件的完整绝对或相对路径,后跟文件名。

我用了打开() 函数,我提供 2 个参数:第一个是 文件名 ,第二个是模式 你想打开文件。您想读取该文件,因此您必须在 中打开它阅读模式 ( 'r' )。打开文件后,您需要能够使用变量识别文件,以便对其执行一些操作。这种变量在技术上称为 处理 ,在这种情况下,我将其称为 b .

现在阅读您可以使用的所有文本 b.read() 然后你可以把它赋给变量 正文 . (如果你想逐行阅读,你会这样做: b.readline() 但在这种情况下你不想要这个。)

请注意,我使用了 声明,这是打开和处理文件的首选方式,因为它会在最后自动关闭文件,否则您必须手动执行。之前 可用,您必须执行以下操作:
b = open('body.txt', 'r'):
body = b.read()
b.close()

现在最好对变量 中包含的字符串进行 url 编码。正文 , 所以我们对 做同样的事情主题 :
body = body.replace(' ', '%20')

现在是时候使用 网络浏览器 模块并提供您获得的数据作为参数,连接字符串。
webbrowser.open('mailto:?to=' + recipient + '&subject=' + subject + '&body=' + body, new=1)

显然你还需要导入 网络浏览器 模块在使用之前。
为了清楚起见,我将重写整个程序,不加注释:
import webbrowser

recipient = 'emailaddress'
subject = 'mysubject'

with open('body.txt', 'r') as b:
    body = b.read()

body = body.replace(' ', '%20')

webbrowser.open('mailto:?to=' + recipient + '&subject=' + subject + '&body=' + body, new=1)

关于python - 在 Python 中使用的高级邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39267464/

相关文章:

php - 无法在 Laravel 中发送邮件

css - Outlook 有条件地影响 Gmail Webviewer

python - 从 Python 中的子目录导入

python - pipenv 和 pyinstaller 没有打包依赖项

python - 从 pdf 中提取表格

python - 我在哪里放置我的 python 测试的 Assets ?

python - 在Python中,是否有一个字符串s使得float(s)为None?

python - 在极坐标中显示

python - Python 中函数运行时间较长 - 效率

Python/Yagmail - 如何将本地镜像嵌入到电子邮件中?