使用 Persits 的邮件发件人和主题字符编码

Mail Sender And Subject Character Encoding With Persits

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

邮件发送功能

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截图(问题出在这里)

Gmail 邮件应用程序屏幕截图(发件人和主题正确使用土耳其语字符)

要在 header 中发送的电子邮件字段(收件人、发件人、主题和其他标准和自定义 headers)必须在包含 non-ASCII 个字符时进行编码。

AspEmail 有一个辅助方法 EncodeHeader 可以对此类字段进行编码,因此您可以使用它。

在给定的示例代码中,必须对 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

Encodes a string containing non-US-ASCII characters according to RFC-1522, returns the resultant encoded string. Use this method to encode a non-US-ASCII subject, sender's name or recipient's name, e.g.

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

or

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

Charset can be set to "UTF-8" or any valid character set code described in Chapter 6.