簡體   English   中英

System.Net.Mail C#發送郵件時出現問題

[英]Problem while sending mail by System.Net.Mail C#

這是我的郵件發送代碼。 我收到“郵件頭中有無效字符”錯誤。當我更改我的計算機名稱時,一些最短的名稱。 問題解決了。 但在我的域名中,整個計算機名稱如“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以上的任何字符,則會發生這種情況。 這不應該發生,因為名稱應該已經編碼,但我想其他的東西也很有趣。

如果將其修改為“網絡”,則收到此錯誤---然后錯誤得到解決。 (我的理解是 - 注明指定的pickupdirectory選項,標題-encoding utf-8(base64)給出了錯誤)

希望能幫助到你

嘗試發送郵件的標題是什么?

您可以使用此MSDN代碼段輕松轉儲:

string[] keys = message.Headers.AllKeys;
        Console.WriteLine("Headers");
        foreach (string s in keys)
        {
            Console.WriteLine("{0}:", s);
            Console.WriteLine("    {0}", message.Headers[s]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM