使用 pop3 在 C# 中读取 outlook 电子邮件(韩语)

read outlook email in C# using pop3 (in korean)

我想使用 pop3 在 C# 中阅读 outlook 电子邮件。 当我从我的邮箱收到邮件时,有编码异常,因为我读的是韩文电子邮件。 我怎样才能阅读韩语电子邮件? 我可以设置我想阅读的邮箱吗? 请帮助我

    class Program
    {
        static Pop3Client client = new Pop3Client();
        static StringBuilder builder = new StringBuilder(); 
        static void Main(string[] args)
        {

            client.Connect("outlook.office365.com", 995, true);
            client.Authenticate("blahblahblah", "blahblahblah");//로그인

            Console.WriteLine("Checking Inbox");
            DataTable table = new DataTable();
            var count = client.GetMessageCount();//몇개의 메세지가 있는지
            Console.WriteLine(count);

            for (int i=count;i>=1;i--)
            {
                var message = client.GetMessage(i);
                var fromAddress = message.Headers.From.Address;
                var subject = message.Headers.Subject;
                var messageBody = String.Empty;

                var plainText = message.FindFirstPlainTextVersion();

                if (plainText == null)
                {
                    var html = message.FindFirstHtmlVersion();
                    messageBody = html.GetBodyAsText();
                }
                else
                {
                    messageBody = plainText.GetBodyAsText();
                }
                table.Rows.Add(i,subject, fromAddress, messageBody);
            }

        }
    }

您好,欢迎来到 Stack Overflow。 据我了解,您正在使用 OpenPop.NET 库。

OpenPop.NET 使用 EncodingFinder class 找到正确的编码。默认情况下,它仅支持 utf8 和 ascii(至少在 github 阅读库代码)。 根据此页面: http://hpop.sourceforge.net/exampleChangeCharacterSetMapping.php 您可以将编码添加到 EncodingFinder。 在你的情况下,你所要做的就是:

static void Main(string[] args)
{
   EncodingFinder.AddMapping("ks_c_5601-1987", Encoding.GetEncoding(949));
   // rest of the application

请注意,这仅适用于 .NET Framework,不适用于 .NET Core,因为后者支持的编码数量非常有限 (https://docs.microsoft.com/en-us/dotnet/api/system.text.encodinginfo.getencoding?view=netcore-3.1)。

我没有用于测试此解决方案的韩国 pop3,但我希望它能奏效。祝你好运!

搜索后编辑 应该也可以在 .NET Core 中使用韩语编码,只是有点棘手:

static void Main(string[] args)
{
   Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
   EncodingFinder.AddMapping("ks_c_5601-1987", Encoding.GetEncoding(949));
   // rest of application

如果您使用的是 .NET Core,请尝试一下。