为什么在短信中将被替换为短信短信中的问号?
问题描述:
我正在使用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);
}
}
...
答
你的代码最有可能不是怪罪;并且是最有可能在翻译中失去的一个真实的案例
- 在世界上的短信所使用的大多数手机使用的编码是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发送消息。他们可能会花钱,但正如他们所说;你得到你所支付的费用
你知道什么平台将电子邮件转换为SMS吗? – Poosh
我想它取决于.NET库的内部实现。 – user8034232