gpt4 book ai didi

python - 在 Python 中使用 DKIM 手动签署电子邮件

转载 作者:太空狗 更新时间:2023-10-30 01:15:16 25 4
gpt4 key购买 nike

我是 Python 的新手,正在尝试通过套接字通信创建电子邮件发送脚本,但似乎无法使用 dkimpy 库对其进行签名。我在网上尝试了几个示例,但在运行 dkim.sign 时都返回了相同的错误:

File "C:\Python34\lib\re.py", line 196, in split return _compile(pattern,flags).split(string, maxsplit)
TypeError: expected string or buffer

据我所知,dkim.sign 函数中的第一个变量应该是一个字符串,所以我尝试了 readlines () 甚至 .as_string() 来确定。我检查了消息,它似乎符合 RFC822。但我会仔细检查是否有人认为这可能是问题所在。没有 dkim.sign 它可以完美工作(减去任何安全性,如 SPF/DKIM)

这是我正在使用的代码片段:

f=open('mail.htm','r') 
text=MIMEText(f.read(),'html')
headers = Parser().parse(open('mail.htm', 'r'))
sender=headers['From']
receiver=headers['To']
subj=headers['Subject']
f.close()
private_key = open('default.pem').read()
headers = ['To', 'From', 'Subject']
sig = dkim.sign(text, 'default', '<mydomain.here>', private_key, include_headers=headers)

解析后的 header 也用作套接字发送脚本的输入。我确实有一个用于测试目的的 dkim key ,但我认为它甚至没有达到这一点。

有什么见解吗?

编辑:好的,我只是尝试使用 dkimpy lib 中的 dkim.rfc822_parse 解析字符串(而不是对其进行签名),但出现以下错误:

return _compile(pattern, flags).split(string, maxsplit)
TypeError: can't use a bytes pattern on a string-like object

我是在读这篇文章还是看起来代码需要一个字符串但模式是以字节为单位的?

已修复:奇怪的是我没想到要检查 private_key。我在 Win 中手动创建了我不知道的 key ,Windows 添加了一个不可见的换行符,甚至 vim 或 nano 都看不到。用 MCEdit 删除它后,程序运行顺利。感谢您的帮助:)

最佳答案

如果我没记错的话,dkim.sign 需要完整的消息源作为参数,但您传递的是 MIMEText 对象。

尝试传递 text.as_string() 而不是

sig = dkim.sign(text.as_string(), .... )

关于python - 在 Python 中使用 DKIM 手动签署电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com