C# DKIMKeySigner 无法打开附件

9
我正在给用户发送带附件的邮件。 未签名的邮件会得到一个大小约为64KB的.pdf文件,而且工作得非常好。
然而,当我为其他用户签名时,PDF文件变成了大约64B,无法打开。
在签名时,我没有对附件进行任何处理,这非常奇怪。
我的签名代码:
 email = SpecificMethods.DKIMSign(email);

internal static MailMessage DKIMSign(MailMessage email)
    {
        var privateKey = PrivateKeySigner.Create(@"-----BEGIN RSA PRIVATE KEY-----
         -----END RSA PRIVATE KEY-----");

        var domainKeySigner = new DomainKeySigner(privateKey, "***.com", "**", new string[] { "mime-version", "date", "subject", "from", "to", "content-type" });
        email.DomainKeySign(domainKeySigner);

        var dkimSigner = new DkimSigner(privateKey, "***.com", "**", new string[] { "mime-version", "date", "subject", "from", "to", "content-type" });
        email.DkimSign(dkimSigner);

        return email;
    }

最终将其发送。在那里没有特别的事情发生。

为什么我的附件会“损坏”?


我建议使用我的MimeKitMailKit库来对消息进行DKIM签名并通过SMTP发送。 - jstedfast
1个回答

2

我认为您应该更改用于签署消息的库 或者 用于发送实际电子邮件的类。我尝试了一个快速搜索,寻找替代 System.Net.SmtpClient 的方法,但没有找到。

您没有指定使用的 DLL 包,因此进行了谷歌搜索,跳转到这个项目

不幸的是,如果您查看自述文件...


已知问题

由于 System.Net.Mail.SmtpClient 会随机生成边界标识符,并且由于此代码通过对 SmtpClient 进行黑客攻击以在发送之前检索完整的电子邮件内容,所以当使用 SmtpClient 和 MailMessage 发送时,不能在 MailMessage 具有备选视图或附件时使用此代码。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接