首页 Python 使用Python中的DKIM手动签署电子邮件

使用Python中的DKIM手动签署电子邮件

我是Python新手并尝试通过套接字通信创建一个发送脚本的电子邮件,但似乎无法用dkimpy lib签名.我在网上尝试了几个例子但是在运行dkim.sign时都返回了相同的错误:File C:Python34libre.py, line 196, in split return _compile(pattern,flags).split(strin

我是Python新手并尝试通过套接字通信创建一个发送脚本的电子邮件,但似乎无法用dkimpy lib签名.我在网上尝试了几个例子但是在运行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','

解析的头文件也用作套接字发送脚本的输入.我有一个用于测试目的的dkim键,但我认为它甚至没有达到这一点.

任何见解?

编辑:好的,我只是尝试使用dkimpy lib中的dkim.rfc822_parse解析字符串(而不是签名),我收到以下错误:

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

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

修复:很奇怪我没想过检查private_key.我手动创建Win中的密钥,所以我不知道,Windows添加了一个隐形的换行符,甚至vim或nano都看不到.用MCEdit删除后,程序顺利运行.
谢谢您的帮助 :)
最佳答案
如果我没记错的话,dkim.sign期望完整的消息源作为参数,但是你传递了一个MIMEText对象.

尝试传递text.as_string()

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

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/python/20200804/8221.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

【免责声明】本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关链接至邮箱xwei067@foxmail.com我们将及时予以处理。

Copygight © 2016-2023 https://www.0532zz.com All Rights Reserved.青岛站长网

站长:xwei067#foxmail.com(请把#换成@)