外部 IE 应用程序无法识别 PhpMailer 重音字符
PhpMailer accented characters not recognized in external IE application
早上好,
我使用 PhpMailer 发送邮件的 php 页面有问题,因为当我将所有内容发送到外部应用程序时,我输入的所有带重音字母的内容都使用旧的 Internet Explorer,下载时使用的是非重音字符;我想这是一个编码问题,为此我尝试做一些测试,放在下面:
$today = date("F j, Y, g:i a");
require'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Host = "####";
$mail->Username = "####";
$mail->Password = "####";
$mail->SMTPSecure = 'ssl';
$mail->Port = ####;
$mail->From = "####";
$mail->FromName = '';
$mail->charSet = "multipart/alternative";
$mail->AddAddress("####");
$mail->Subject = utf8_decode($oggetto);
$mail->Body = utf8_decode($messaggio);
以下是要发送到需要特殊标记的外部应用程序的消息:
$messaggio = '<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-15">'
. '<!--MF@[WEB]--><strong>ORDINE</strong> num. <!--MF$[NUM]-->' . $numero_ordine . '<!--MF&[NUM]--> del <!--MF$[DAT]-->' . $data . '<!--MF&[DAT]--><br/>'
. '<hr/><br/>'
. 'Azienda: <!--MF$[SOC]-->' . $UserSoc . '<!--MF&[SOC]--> ' . $strSocCts . '<br />'
. $strSdi
. $strInd . '<br/>'
. $strPiv . '<br/>'
. $strCRS . '<br/>'
. $strTel . '<br />'
. $strEma . '<br />'
. '<br />'
. 'Dati recapito:<br />'
. '<hr/>'
. $strRecSoc . '<br/>'
. $strRecInd . $strRecTel . $strRecEma
. '<br /><br />'
. $prodott
. '<hr/>'
. 'Subtotale materiale: ' . fix($total) . ' euro + Trasporto: ' . $trasporto . ' euro <br />'
. $ivatotale . $sconto . $pagamento
. 'Vettore: ' . $vettore . '<br />'
. '<hr>'
. $totaletotale
. $annotazioni
. 'Note : <br/><hr>'
. $UserNec . '<br/><br/>';
作为编码测试,我测试了这些,但我只得到没有重音或“奇怪”字符的字符。
/**
* The character set of the message.
* @type string
*/
public $CharSet = 'UTF-8';
/**
* The MIME Content-type of the message.
* @type string
*/
public $ContentType = 'text/plain';
尝试输入 charset = ISO-8859-1 或 UTF8 但没有结果。
我只是不明白我哪里错了。
提前致谢。
首先,您使用的是非常旧且不受支持的 PHPMailer 版本,因此 upgrade。
下一个:
$mail->charSet = "multipart/alternative";
PHP 对 属性 名称区分大小写,因此这将无法设置 CharSet
属性。即使它确实有效,multipart/alternative
也是一种 MIME 类型,而不是字符集名称。
utf8_decode
函数将 UTF-8 文本转换为 ISO-8859-1,对于两个字符集共有的字符集。这是否合适取决于您的输入字符串实际上是 UTF=8,并且输出预期为 ISO-8859-1;如果其中任何一个不正确,就会弄得一团糟。
一般来说,您想在任何地方都使用 UTF-8,如果您这样做,您需要做的就是:
$mail->CharSet = 'UTF-8';
如果您的内容已经是 UTF-8 格式(可能是这样),您可以简单地执行以下操作:
$mail->Subject = $oggetto;
$mail->Body = $messaggio;
早上好, 我使用 PhpMailer 发送邮件的 php 页面有问题,因为当我将所有内容发送到外部应用程序时,我输入的所有带重音字母的内容都使用旧的 Internet Explorer,下载时使用的是非重音字符;我想这是一个编码问题,为此我尝试做一些测试,放在下面:
$today = date("F j, Y, g:i a");
require'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Host = "####";
$mail->Username = "####";
$mail->Password = "####";
$mail->SMTPSecure = 'ssl';
$mail->Port = ####;
$mail->From = "####";
$mail->FromName = '';
$mail->charSet = "multipart/alternative";
$mail->AddAddress("####");
$mail->Subject = utf8_decode($oggetto);
$mail->Body = utf8_decode($messaggio);
以下是要发送到需要特殊标记的外部应用程序的消息:
$messaggio = '<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-15">'
. '<!--MF@[WEB]--><strong>ORDINE</strong> num. <!--MF$[NUM]-->' . $numero_ordine . '<!--MF&[NUM]--> del <!--MF$[DAT]-->' . $data . '<!--MF&[DAT]--><br/>'
. '<hr/><br/>'
. 'Azienda: <!--MF$[SOC]-->' . $UserSoc . '<!--MF&[SOC]--> ' . $strSocCts . '<br />'
. $strSdi
. $strInd . '<br/>'
. $strPiv . '<br/>'
. $strCRS . '<br/>'
. $strTel . '<br />'
. $strEma . '<br />'
. '<br />'
. 'Dati recapito:<br />'
. '<hr/>'
. $strRecSoc . '<br/>'
. $strRecInd . $strRecTel . $strRecEma
. '<br /><br />'
. $prodott
. '<hr/>'
. 'Subtotale materiale: ' . fix($total) . ' euro + Trasporto: ' . $trasporto . ' euro <br />'
. $ivatotale . $sconto . $pagamento
. 'Vettore: ' . $vettore . '<br />'
. '<hr>'
. $totaletotale
. $annotazioni
. 'Note : <br/><hr>'
. $UserNec . '<br/><br/>';
作为编码测试,我测试了这些,但我只得到没有重音或“奇怪”字符的字符。
/**
* The character set of the message.
* @type string
*/
public $CharSet = 'UTF-8';
/**
* The MIME Content-type of the message.
* @type string
*/
public $ContentType = 'text/plain';
尝试输入 charset = ISO-8859-1 或 UTF8 但没有结果。
我只是不明白我哪里错了。 提前致谢。
首先,您使用的是非常旧且不受支持的 PHPMailer 版本,因此 upgrade。
下一个:
$mail->charSet = "multipart/alternative";
PHP 对 属性 名称区分大小写,因此这将无法设置 CharSet
属性。即使它确实有效,multipart/alternative
也是一种 MIME 类型,而不是字符集名称。
utf8_decode
函数将 UTF-8 文本转换为 ISO-8859-1,对于两个字符集共有的字符集。这是否合适取决于您的输入字符串实际上是 UTF=8,并且输出预期为 ISO-8859-1;如果其中任何一个不正确,就会弄得一团糟。
一般来说,您想在任何地方都使用 UTF-8,如果您这样做,您需要做的就是:
$mail->CharSet = 'UTF-8';
如果您的内容已经是 UTF-8 格式(可能是这样),您可以简单地执行以下操作:
$mail->Subject = $oggetto;
$mail->Body = $messaggio;