给出一封原始邮箱,我如何用Python验证DKIM签名?

理想情况下,我想要的不仅仅是通过/不通过的结果,我还想知道任何问题的细节.

我已经找到了dkimpy包,但API对我来说并不明显.

推荐答案

对于简单的通过/失败验证:

import dkim # dkimpy

# Returns True/False
res = dkim.verify(mail_data.encode())

对于更细微的东西,你可以这样做:

d = dkim.DKIM(mail_data.encode(), logger=None, minkey=1024, timeout=5, tlsrpt=False)

# 
try:
    d.verify()
    # If it fails, a `dkim.ValidationError` exception will be thrown with details
except dkim.ValidationError as e:
    print(e)

# dkim.ValidationError: body hash mismatch (got b'PXUrNdoTzGcLtd4doJs+CufsiNvxoM5Q3SUPGi00C+I=', expected b'ax9SInd7Z3AQjRzcZSnY6UK392QEvjnKrjhAnsqfDnM=')
    

Python相关问答推荐

即使在可见的情况下也不相互作用

滚动和,句号来自Pandas列

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

Pandas - groupby字符串字段并按时间范围 Select

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

当独立的网络调用不应该互相阻塞时,'

所有列的滚动标准差,忽略NaN

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

Python避免mypy在相互引用中从另一个类重定义类时失败

在用于Python的Bokeh包中设置按钮的样式

使用tqdm的进度条

我可以不带视频系统的pygame,只用于游戏手柄输入吗?''

每次查询的流通股数量

浏览超过10k页获取数据,解析:欧洲搜索服务:从欧盟站点收集机会的微小刮刀&

Seaborn散点图使用多个不同的标记而不是点

如果不使用. to_list()[0],我如何从一个pandas DataFrame中获取一个值?

如何在表单中添加管理员风格的输入(PDF)

大Pandas 中的群体交叉融合

401使用有效的OAuth令牌向Google Apps脚本Web App发出POST请求时出现未经授权的错误(";

保存由PYTHON在EXCEL中所做更改的问题