2017-05-19 44 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发送消息。他们可能会花钱,但正如他们所说;你得到你所支付的费用