foens / hpop

OpenPOP.NET code repository
http://hpop.sourceforge.net/
204 stars 114 forks source link

Incorrect decode UTF-8 encoded mail address #50

Open cshrper opened 8 years ago

cshrper commented 8 years ago

bug occurs when I load Message from ".eml" file, that has been created some other program, and it has the MailAddress encoded in UTF-8, for example: I got decoded value "Лучшему кл��енту jane@contoso.com" instead of "Лучшему клиенту jane@contoso.com"

you can test old version with headers: X-Sender: =?utf-8?Q?=D0=A3=D0=B2=D0=B0=D0=B6=D0=B0=D0=B5=D0=BC=D1=8B=D0?= =?utf-8?Q?=B9=D0=BF=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D1=89=D0=B8=D0=BA?= ben@contoso.com X-Receiver: =?utf-8?Q?=D0=9B=D1=83=D1=87=D1=88=D0=B5=D0=BC=D1=83=D0=BA?= =?utf-8?Q?=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D1=83?= jane@contoso.com X-Receiver: =?utf-8?Q?=D0=9B=D1=83=D1=87=D1=88=D0=B5=D0=BC=D1=83=D0=B4?= =?utf-8?Q?=D1=80=D1=83=D0=B3=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0?= =?utf-8?Q?=B3=D0=BE=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= alex@contoso.com MIME-Version: 1.0 From: =?utf-8?Q?=D0=A3=D0=B2=D0=B0=D0=B6=D0=B0=D0=B5=D0=BC=D1=8B=D0=B9?= =?utf-8?Q?=D0=BF=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D1=89=D0=B8=D0=BA?= ben@contoso.com To: =?utf-8?Q?=D0=9B=D1=83=D1=87=D1=88=D0=B5=D0=BC=D1=83=D0=BA=D0=BB=D0?= =?utf-8?Q?=B8=D0=B5=D0=BD=D1=82=D1=83?= jane@contoso.com, =?utf-8?Q?=D0=9B=D1=83=D1=87=D1=88=D0=B5=D0=BC=D1=83=D0=B4=D1=80=D1?= =?utf-8?Q?=83=D0=B3=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=B3=D0=BE?= =?utf-8?Q?=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= alex@contoso.com

foens commented 8 years ago

Hello and thank you for your pull request. Is it possible that you could change the indentation to tabs and add a test case such that that this bug will not be reintroduced again? Then I would merge the pull request.

cshrper commented 8 years ago

No, I do not change any thing. I just do so: var to = new MailAddress("jane@contoso.com", "Лучшему клиенту"); var from = new MailAddress("ben@contoso.com", "Уважаемый поставщик"); var message = new MailMessage(from, to); message.To.Add(new MailAddress("alex@contoso.com", "Лучшему другу лучшего клиента")); message.Subject = "Используем новый SMTP клиент."; message.SubjectEncoding = Encoding.UTF8;

message.Body = "Using this new feature, you can send an e-mail message from an application very easily."; message.BodyEncoding = Encoding.UTF8; var smtpClient = new System.Net.Mail.SmtpClient { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory }; smtpClient.PickupDirectoryLocation = tempDir.DirectoryPath; smtpClient.Send(message);

And then I try to load message: var msg = OpenPop.Mime.Message.Load(new FileInfo(Path.Combine(path, "Test.eml")));

jstedfast commented 8 years ago

This patch is broken. The patch assumes that each encoded word token uses the exact same encoding and charset values, but neither are guaranteed to be the case.