ColdFusion cfmail special characters in subject li

2019-02-14 06:37发布

问题:

Special characters in the subject line of the mail getting converted in to question marks or boxes.

I have tried to wrap the dynamic string of the subject line in URLEncodedFormat , however ended up in vain.

<cfset strSubject= URLEncodedFormat(s)>
<cfmail 
  from="xxxxx@xx.com" 
  to="yyyyyyy@yyy.com" 
  subject="#strSubject#"         
  type="html"
>
  #testText#
</cfmail>

回答1:

Assuming the special characters are unicode charactes, you will have to encode the string to a base64 format and use that in the subject line. Like this,

<cfset strSubject="Demande d’chantillons supplémentaires">
<cfset strSubject=ToBase64(strSubject, "utf-8")>

<cfmail from="test@test.com" to="test@test.com" subject="=?utf-8?B?#strSubject#?=" type="html">
    #testText#
</cfmail>

The subject line must be in the format =?<charset>?<encoding>?<encoded text>?=

The ? and = are required.

MIME - Encoded Word

"charset" may be any character set registered with IANA. Typically it would be the same charset as the message body.

"encoding" can be either "Q" denoting Q-encoding that is similar to the quoted-printable encoding, or "B" denoting base64 encoding.

"encoded text" is the Q-encoded or base64-encoded text.



回答2:

Also: add charset="utf-8" to the cfmail tag. If you are using utf-8 in the subject, you will probably also use it in the body.