电子邮件地址编码问题
问题描述:
我有以下字符串,我需要用于确认电子邮件地址。这是西班牙语翻译,当在Web客户端中查看时导致问题。如下所示。电子邮件地址编码问题
model.FromAddresses = new EmailAddress
{
Address = fromAddressComponents[0],
DisplayName = fromAddressComponents[1]
};
值从资源串采取以下
<data name="BookingConfirmation_FromAddress" xml:space="preserve">
<value>Confirmació[email protected]</value>
</data>
显示在电子邮件客户端的值变为(应该是Confirmació[email protected])
=?utf-8?Q?Confirmaci=C3=B3n
你能看到避免这种情况?我知道这是因为ó,但我不知道如何避免这个问题!
谢谢, 詹姆斯下面
UPDATE
全码:
public void Send(MailAddress to, MailAddress from, string subject, string body)
{
var message = new MailMessage
{
BodyEncoding = new System.Text.UTF8Encoding(true),
From = from,
Subject = subject,
Body = body,
IsBodyHtml = true
};
message.To.Add(to.Address);
var smtp = new SmtpClient() { Timeout = 100000 };
try
{
smtp.Send(message);
}
finally
{
if (smtp.DeliveryMethod == SmtpDeliveryMethod.Network)
smtp.Dispose();
}
}
// New Version
// --------------------------
public override void Handle(SendEmailEmailCommand emailCommand)
{
if(!_config.SendEmail)
{
return;
}
var to = new MailAddress(emailCommand.To.Address, emailCommand.To.DisplayName);
var from = new MailAddress(emailCommand.From.Address, Uri.UnescapeDataString(emailCommand.From.DisplayName));
try
{
var msgBody = _compressor.Decompress(emailCommand.Body);
_emailClient.Send(to, from, emailCommand.Subject, msgBody);
}
catch (Exception ex)
{
_logger.Error("An error occurred when trying to send an email", ex);
throw;
}
}
public void Send(MailAddress to, MailAddress from, string subject, string body)
{
var message = new MailMessage
{
BodyEncoding = new System.Text.UTF8Encoding(true),
From = from,
Subject = subject,
Body = body,
IsBodyHtml = true
};
message.To.Add(to.Address);
if (!string.IsNullOrWhiteSpace(_config.BccEmailRecipents))
{
message.Bcc.Add(_config.BccEmailRecipents);
}
SendEmail(message);
if (_config.BackupEmailsEnabled)
{
SendBackupEmail(message);
}
}
private void SendEmail(MailMessage message)
{
var smtp = new SmtpClient() { Timeout = 100000 };
try
{
smtp.Send(message);
}
finally
{
if (smtp.DeliveryMethod == SmtpDeliveryMethod.Network)
smtp.Dispose();
}
}
答
请看下面使用System.Uri类的方法这个例子,希望它可以帮助你
string email = "Confirmació[email protected]";
string escaped =
System.Uri.EscapeDataString(email); // Confirmaci%C3%B3n%40test.com
string unescaped =
System.Uri.UnescapeDataString(email); //Confirmació[email protected]
谢谢但我试过ECNcode /解码但它不起作用 – 2012-07-24 08:15:08
你可以显示代码如何从资源字符串中获取价值? – 2012-07-24 08:27:28
这实际上是一个有效的电子邮件地址吗? – 2012-07-24 08:29:54