System.Net.Mail C#发送邮件时出现问题
-
03-07-2019 - |
题
这是我的邮件发送代码。我收到“邮件标题中存在无效字符”错误。当我更改我的计算机名称时,有一个最短的名字。问题解决了。但在我的域中,整个计算机名称如“04500-ab04545.xxxdomain.gov.tr”。所以我需要为这个问题找到另一种解决方案。
因此,我无法在从c#代码发送邮件时提供静态计算机名称。
MailMessage msg = new MailMessage();
msg.Body = "axxxxxx";
msg.To.Add(new MailAddress("xxxx@xxxx.domain"));
msg.From = new MailAddress("xxxx@xxxx.domain","blab blalb");
msg.Subject = "Subject xxx";
SmtpClient server = new SmtpClient("xxxxxxxx",25);
server.Credentials = new NetworkCredential("xxxxx", "xxxxxxx");
SmtpClient server = new SmtpClient("mail.adalet.gov.tr",25);
server.Credentials = new NetworkCredential("xxx", "xxx");
server.Send(msg);
解决方案
我怀疑这可能是与编码相关的问题。
尝试使用 new MailAddress(" xxxx@xxxx.domain",“blab blalb",Encoding.Default)
构造函数。
请尝试 Encoding.Unicode
。
更新
经过一番挖掘后,抛出了这个异常:
void System.Net.BufferBuilder.Append(string,int,int);
如果您在电子邮件地址中有\ xff以上的任何字符,就会发生这种情况。这不应该发生,因为名称应该已经编码,但我想其他的东西也很有趣。
其他提示
邮件试图发送哪些标题?
您可以使用此MSDN代码段轻松转储:
string[] keys = message.Headers.AllKeys;
Console.WriteLine("Headers");
foreach (string s in keys)
{
Console.WriteLine("{0}:", s);
Console.WriteLine(" {0}", message.Headers[s]);
如果将此修改为“网络”,则会收到此错误消息。 ---然后错误得到解决。 (我的理解是 - 注明指定的pickupdirectory选项,标题-encoding utf-8(base64)给出了错误)
希望有所帮助
不隶属于 StackOverflow