【问题标题】:PDO send email using UTF-8PDO 使用 UTF-8 发送电子邮件
【发布时间】:2018-04-16 16:14:23
【问题描述】:

在以下代码中,我使用以下行添加了编码部分:

$mail->exec("set names utf8");

但是,电子邮件未正确发送。

我尝试了以下方法:

$to = $_POST['email'];
      $subject = "Konfirmo regjistrimin ZEROPULSE Team";
      $body = "<p>Përshendetje $emri, faleminderit per anetaresimin tuaj ne webfaqen <a href='http://www.flamurbeqiraj.com'>www.flamurbeqiraj.com</a>!</p>
      <p>Per te aktivizuar llogarine tuaj, ju lutem <a href='".DIR."administrator/aktivizo.php?x=$id&y=$activasion'>klikoni ketu</a>.</p>
      <p>T'gjitha te mirat, ZP Team.</p>";

      $mail = new Mail();
      $mail->setFrom(SITEEMAIL);
      $mail->addAddress($to);
      $mail->subject($subject);
      $mail->exec("set names utf8");
      $mail->body($body);
      $mail->send();

如何更改编码 UTF-8 部分?

【问题讨论】:

  • $mail-&gt;exec("set names utf8"); - 认真...?您将盲目的复制和粘贴与实际阅读此处的工作原理相混淆。 (但你还是得自己做,因为你没有告诉我们 Mail 应该是什么,因为原生 PHP 类不是。)

标签: php email mysqli pdo


【解决方案1】:

实际上对于 pdo 你必须在连接中做 utf-8 字符集:

new PDO("mysql:host=$host;dbname=$db;charset=utf8")

【讨论】:

  • 这是我的 PDO 连接$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS); 所以应该是这样的?:$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS.";charset=utf8");
  • 不,像这样:$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME.";charset=utf8", DBUSER, DBPASS, array(PDO::MYSQL_ATTR_INIT_COMMAND =&gt; "SET NAMES 'utf8'"));
  • 同样的问题,“ë”字符显示为“ë”:/
  • 啊,我明白了,您需要在邮件中指定标题。 stackoverflow.com/questions/7266935/how-to-send-utf-8-email
猜你喜欢
  • 2022-01-09
  • 1970-01-01
  • 2011-08-20
  • 2023-04-08
  • 2012-04-08
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多