2017-05-19 98 views
1

我正在使用smtp服務向客戶發送SMS消息的C#應用​​程序。目前,消息正文和消息主題中的at標誌都將被替換爲問號。我嘗試了許多種編碼,如unicode,UTF-8,UCS-2,ASCII,但都可以很好地工作。有誰知道如何避免它?爲什麼在短信中將被替換爲短信短信中的問號?

var mailMessage = new MailMessage 
{ 
     IsBodyHtml = true, 
     SubjectEncoding = Encoding.Unicode, 
     Subject = "@@" + subject + "@@", 
     BodyEncoding = Encoding.UTF8, 
     Body = messageBody ?? "", 
     From = new MailAddress(from, "My Name"), 
}; 
    using (var smtpClient = new SmtpClient()) 
{ 
     using (mailMessage) 
     { 
     smtpClient.Send(mailMessage); 
     } 
} 
... 
+0

你知道什麼平臺將電子郵件轉換爲SMS嗎? – Poosh

+0

我想它取決於.NET庫的內部實現。 – user8034232

回答

1

你的代碼最有可能不是怪罪;並且是最有可能在翻譯中失去的一個真實的案例

  • 在世界上的短信所使用的大多數手機使用的編碼是GSM 03.38這不是手機和相應的運營商之外發現了什麼。
  • 電子郵件的標準編碼是ASCII碼,支持可選的UTF-8。

您遇到的問題是當您跨越從SMTP(電子郵件)到SMS,這不是您的代碼的一部分的橋樑之間的2標準之間的翻譯。這很可能是電話公司提供的免費服務。這是最有可能不會被他們固定的東西,因爲它沒有錢。

它似乎已經知道了相當長的時間。如果我們回到5年前,我們可以找到這個SO帖子:converting Twilio sms body to a string - encoding error for @ symbol這聽起來很像你正在經歷的。

因此,唯一真正可能的解決方法是使用SMTP來發送文本消息。有許多SMS網關服務可用於通過相對簡單的API發送消息。他們可能會花錢,但正如他們所說;你得到你所支付的費用