在发送到寻呼机的消息中神奇地出现了等号

时间:2014-03-06 11:38:44

标签: c# email mime quoted-printable

我正在向一个电子邮件地址发送邮件,该邮件地址将邮件转发给寻呼机。我发送的邮件是

  

“Oth info;谢谢你现在完成测试,请注意34a门   当使用CFSRES lt1“。

发送寻呼机消息时,它将打开和关闭

但客户在其寻呼机上收到

  

“Oth info;谢谢你现在完成测试,请注意34a门   当使用CFSRES发送寻呼机消息时,将op = en并关闭   LT1" 。

有谁知道为什么等号出现在open changed to op= en中。我知道特殊字符有时可能会被更改,就像空格可以变成%20,但 open 不包含任何特殊字符,所以据我所知,它不会发生任何变化。

2 个答案:

答案 0 :(得分:4)

这是Quoted-printable encoding

的标志
  

QP通过使用等号“=”作为转义字符来工作。它还将行长度限制为76,因为某些软件对行长度有限制。

因此,您可能会尝试将邮件拆分为多行,以防止转发器添加转义字符。

答案 1 :(得分:1)

我搜索网络并找到解决方案,这links解决了我的问题。这是一些用户满意的代码,我需要提供CreateAlternateViewFromString。

MailMessage emailmsg = new MailMessage("from@address.co.za", "to@address.co.za")
emailmsg.Subject = "Subject";
emailmsg.IsBodyHtml = false;
emailmsg.ReplyToList.Add("from@address.co.za");
emailmsg.BodyEncoding = System.Text.Encoding.UTF8;
emailmsg.HeadersEncoding = System.Text.Encoding.UTF8;
emailmsg.SubjectEncoding = System.Text.Encoding.UTF8;
emailmsg.Body = null;

var plainView = AlternateView.CreateAlternateViewFromString(EmailBody, emailmsg.BodyEncoding, "text/plain");
plainView.TransferEncoding = TransferEncoding.SevenBit;
emailmsg.AlternateViews.Add(plainView);

SmtpClient sSmtp = new SmtpClient();
sSmtp.Send(emailmsg);