奇尔卡特:如何解密加密的电子邮件?

时间:2011-07-09 19:16:40

标签: c# email encryption chilkat

我使用Chilkat .NET 4发送了一封电子邮件。此电子邮件使用.pfx文件进行签名,并使用收件人的.cer文件进行加密。这两个文件存储在证书mmc。

中的“受信任的人”文件夹中

现在我尝试接收&用Chilkat解密这封电子邮件。它有效,但电子邮件没有解密。我的.pfx文件和发件人的.cer文件始终位于“受信任的人”文件夹中。我尝试使用AddPfxSourceData方法添加自己的私有证书,它返回TRUE但没有任何反应。我使用的所有Chilkat对象的LastErrorText属性中没有任何错误。

这是我的代码(mail.Decrypted总是FALSE):

            MailMan pop3 = new Chilkat.MailMan();
            pop3.UnlockComponent("30-day trial");

            pop3.MailHost = "pop.server.net";
            pop3.MailPort = 110;

            pop3.PopUsername = "my@email.com";
            pop3.PopPassword = "mypassword";

            bool succes = pop3.AddPfxSourceFile("C:\\my_pfx.pfx, "mypfxpassword");

            EmailBundle emailBundle = pop3.CopyMail();

            for (int i = 0; i < emailBundle.MessageCount; i++)
            {
                Email mail = emailBundle.GetEmail(i);

                if(mail.ReceivedEncrypted && mail.Decrypted)
                    Console.WriteLine(mail.Body);
                else
                    Console.WriteLine("Cannot decrypt this mail");
            }

有什么想法吗?

更新:我用来发送加密电子邮件的代码:

            Chilkat.MailMan mailman = new Chilkat.MailMan();
            mailman.UnlockComponent("30-day trial");

            mailman.SmtpHost = "smtp.server.net";

            mailman.SmtpUsername = "sender@mail.com";
            mailman.SmtpPassword = "senderpassword";

            Chilkat.Email email = new Chilkat.Email();

            email.Subject = "This is an encrypted email !";
            email.Body = "This is the content of a digitally encrypted mail !";

            email.From = "sender@mail.com";
            email.AddTo("My Recipient", "my@email.com");

            // Certificate of my@email.com
            Chilkat.Cert recipientCert = new Chilkat.Cert();
            recipientCert.LoadFromFile("C:\\recipient_cert.cer");

            email.SetEncryptCert(recipientCert);
            email.SendEncrypted = true;

            bool success = mailman.SendEmail(email);

            if (success)
                Console.WriteLine("Mail sent !");

1 个答案:

答案 0 :(得分:1)

我最终尝试使用2台不同的计算机,一台针对发件人,另一台针对收件人,并且可以正常运行。我认为这是因为我用于发件人的两个.pfx文件&amp;收件人已自动生成&amp;在同一台PC上自动签名... 我在每台PC上生成了一个新的.pfx文件,效果很好:)