Chilkat: как расшифровать зашифрованную электронную почту? - PullRequest
2 голосов
/ 09 июля 2011

Я отправил сообщение электронной почты с помощью Chilkat .NET 4. Это письмо подписано файлом .pfx и зашифровано файлом .cer получателя. Эти 2 файла хранятся в папке «Надежные люди» в сертификате mmc.

Теперь я пытаюсь получить и расшифровать это письмо с помощью Chilkat. Это работает, но электронная почта не расшифровывается. Мой файл .pfx и файл .cer отправителя всегда находятся в папке «Надежные люди». Я попытался добавить свой личный сертификат с помощью метода AddPfxSourceData, он возвращает TRUE, но ничего не происходит. В свойствах LastErrorText всех объектов Chilkat, которые я использовал, нет ошибок.

Это мой код (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 Ответ

1 голос
/ 11 июля 2011

Я, наконец, попробую этот сценарий с двумя разными компьютерами, один для отправителя и один для получателя, и он работает.Я думаю, это потому, что два файла .pfx, которые я использовал для отправителя и получателя, были автоматически сгенерированы и подписаны на одном компьютере ... Я создал новый файл .pfx на каждом компьютере, и он прекрасно работает:)

...