邮件发件人和主题字符编码与Persits

时间:2017-01-18 08:41:46

标签: android email asp-classic

我有一个使用Persits Mail的系统。准确地说所有邮件都正确发送但只有安卓主机邮件应用程序没有在主题和发件人文本中显示土耳其字符。我在下面分享图片和邮件发送代码。

邮件发送功能

Sub sendIt(Mesaj,Subjectt,Senderr,sMail,mHost,mFrom,mUsername,mPasword)
    Posta = trim(Posta)
    Set Mail = Server.CreateObject("Persits.MailSender")
    Mail.Charset = "ISO-8859-9"
    Mail.Host       = mHost
    Mail.From       = mFrom
    Mail.Username   = mUsername
    Mail.Password   = mPasword
    Mail.FromName   = Senderr
    Mail.AddAddress sMail
    Mail.Subject    = Subject
    Mail.IsHTML     = True
    Mail.Body       = Mesaj
    Mail.Send
End Sub

Android Native Mail App截图(问题在这里) It must be "Araştırma Anketi"

Gmail Mail App屏幕截图(发件人和主题正确地拥有土耳其字符) On gmail app it's all true

1 个答案:

答案 0 :(得分:3)

要在标头中发送的电子邮件消息字段(来自,来自主题和其他标准和自定义标头)必须在包含非ASCII字符时进行编码。

AspEmail有一个辅助方法EncodeHeader来编码这样的fieds,所以你可以使用它。

在给定的示例代码中,必须对FromNameSubject进行编码。

Sub sendIt(Mesaj,Subjectt,Senderr,sMail,mHost,mFrom,mUsername,mPasword)
    Posta = trim(Posta)
    Set Mail = Server.CreateObject("Persits.MailSender")
    Mail.Charset = "ISO-8859-9"
    Mail.Host       = mHost
    Mail.From       = mFrom
    Mail.Username   = mUsername
    Mail.Password   = mPasword
    Mail.FromName   = Mail.EncodeHeader(Senderr, "ISO-8859-9")
    Mail.AddAddress sMail
    Mail.Subject    = Mail.EncodeHeader(Subject, "ISO-8859-9")
    Mail.IsHTML     = True
    Mail.Body       = Mesaj
    Mail.Send
End Sub

AspEmail Object Reference

  

Function EncodeHeader(Header As String, Optional Charset = "ISO-8859-1") As String

     

根据编码包含非US-ASCII字符的字符串   RFC-1522,返回结果编码的字符串。使用此方法   编码非US-ASCII主题,发件人姓名或收件人姓名,例如

     

Mail.Subject = Mail.EncodeHeader("La fête à Jean-Sébastien Bach")

     

     

Mail.AddAddress "oystein@somecompany.no", Mail.EncodeHeader("Øystein")

     

Charset可以设置为" UTF-8"或任何有效的字符集代码   在Chapter 6中描述。