如何向一个带有破折号的地址发送电子邮件?

6

是我还是System.Net.Mail中的MailAddress类有bug?

以下代码将始终抛出异常:

MailMessage mail = new MailMessage();
mail.From = new MailAddress("me@me.com");     
mail.To.Add("joe-blow@me.com");

mail.Subject = "Test email"
mail.IsBodyHtml = true;
mail.Body = "<b>Does not work</b>";

//Connect to server and send message.               
SmtpClient smtp = new SmtpClient();
smtp.Host = "mailserver.me.com";
smtp.Send(mail);

The exception I get is this:

System.FormatException: The specified string is not in the form required for an
e-mail address.

根据维基百科的说法,破折号是电子邮件地址中本地部分的有效字符。

有没有人知道如何使用System.Net.Mail类向电子邮件地址中包含破折号的人发送电子邮件?


@Mitch Wheat:好评论。我在想“还有其他人能够复制这个吗?” - Pure.Krome
2个回答

2

你确定吗?这段代码对我有效(我用我的实际邮件服务器替换了你的虚拟邮件服务器)。我只收到发送给 joe-blow@me.com 的消息无法投递的通知。

既然你有一个异常消息,我猜它是真实的。可能是编码问题吗?


3
谢谢您的评论,它让我深入思考。似乎我从数据库读取的每个电子邮件地址结尾都有\r,这导致了错误的出现。我会进行修正。 - thorkia
@thorkia:啊,好的。很好。肯定是这样的事情。 - jason

0

在 app.config 文件的 smtp 元素的 from 属性中有一个无效的电子邮件地址可能会导致此异常。尽管这将导致任何尝试发送电子邮件(无论 to 电子邮件地址是否包含破折号)都会引发异常。尽管如此,仍值得检查 app.config 中指定的 mailSettings 元素中的内容。


你是说 app.config 的设置会覆盖代码中的设置(就像 @thorkia 上面编写的那样)? - Pure.Krome
@Pure.Krome - 不,我并不是这个意思。但如果“from”属性中有一个无效的电子邮件地址,它会生成异常,即使您随后通过代码设置了有效的“from”电子邮件地址。如果@thorkia误将from =“me”放在他的app.config中,则会生成异常。在这种情况下,异常将在创建MailMessage对象时抛出,即在执行设置有效的“from”电子邮件地址的代码之前。 - Mike Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接