mySQL中的数值变量在php邮件中使用utf-8截断
我尝试使用utf-8编码将数据库中的数字变量包含到邮件中 以下是php代码:mySQL中的数值变量在php邮件中使用utf-8截断,php,email,Php,Email,我尝试使用utf-8编码将数据库中的数字变量包含到邮件中 以下是php代码: $req = $bdd->prepare('SELECT prix FROM offres WHERE rang=?'); $req->execute(array(1)); $donnees=$req->fetch(); $passage_ligne = "\n"; $v = 10.15; $text='essai1 = '.$v; $text.=$passage_ligne; $text.= '
$req = $bdd->prepare('SELECT prix FROM offres WHERE rang=?');
$req->execute(array(1));
$donnees=$req->fetch();
$passage_ligne = "\n";
$v = 10.15;
$text='essai1 = '.$v;
$text.=$passage_ligne;
$text.= 'essai2 = '.$donnees['prix'];
$text.=' here is a french accent: é';
$v=$donnees['prix'];
$text.=$passage_ligne."essai3 = ".$v;
echo $text;
$from='xxx@wanadoo.fr';
$replyto='xxx@wanadoo.fr';
$Xmailer='PHP/';
$header = 'From: '. $from . $passage_ligne .'Reply-To: '. $replyto . $passage_ligne .'X-Mailer: '. $Xmailer . phpversion();
$header.= "MIME-Version: 1.0". $passage_ligne;
$header.= "Content-Type: text/plain; charset=utf-8". $passage_ligne;
$header.= "Content-Transfer-Encoding: quoted-printable". $passage_ligne;
$passage_ligne .'X-Mailer: '. $Xmailer . phpversion();
mail('xxxr@wanadoo.fr','sujet',$text,$header);
数值变量$donnees['prix']=18确实会显示在屏幕上:
essai1 = 10.15 essai2 = 18 here is a french accent: é essai3 = 18
但不是在邮件中,邮件被截断为“8”:
如果我使用以下标题:
$header = 'From: '. $from . $passage_ligne .'Reply-To: '. $replyto . $passage_ligne .'X-Mailer: '. $Xmailer . phpversion();
数字变量正确显示在邮件中,但不显示重音符号:
essai1 = 10.15
essai2 = 18 here is a french accent: é
essai3 = 18
有没有办法把这两封信都寄到同一封信里谢谢字符在编码中有特殊意义。它被用作转义序列的前缀;后跟2个十六进制数字,用于编码非打印字符 在您的情况下,您正在发送
=18
。=
之后的两个字符被视为十六进制代码1
如果要在引用的可打印邮件中发送文字=
,则需要将其编码为=3D
$v = 10.15;
$text='essai1 =3D '.$v;
$text.=$passage_ligne;
$text.= 'essai2 =3D '.$donnees['prix'];
$text.=' here is a french accent: é';
$v=$donnees['prix'];
$text.=$passage_ligne."essai3 =3D ".$v;
或者您可以使用quoted\u printable\u encode
功能
mail('xxxr@wanadoo.fr','sujet',quoted_printable_encode($text),$header);
后者可能是最好的解决方案,它还可能解决您的重音字符问题。相关?我试图将数据库设置为utf8-mb4,没有任何更改。我刚刚注意到:Mozilla Thunderbird弹出的邮件注释正确显示了文本。只有在邮件正文中,文本才会被截断(邮件源也是正确的)。
mail('xxxr@wanadoo.fr','sujet',quoted_printable_encode($text),$header);