gpt4 book ai didi

php - 联系表单电子邮件中主题的 UTF-8 编码

转载 作者:可可西里 更新时间:2023-11-01 12:30:54 24 4
gpt4 key购买 nike

在这个网站上 Website Link联系表格 我需要以 UTF-8 格式发送电子邮件主题。我们需要在代码的哪个位置声明 UTF-8 编码?

联系.php:

<?
require_once "php/sendmail.class.php";
$sendmail = new sendMail();
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sendmail->setParams($_POST);
$sendmail->parseBody();
$sendmail->setHeaders();
if ($sendmail->send())
{
header('Location: kontakt.php?success=1');
}
}
?>

发送邮件.class.php:

class sendMail {

var $to = 'email'; // set contact email

var $name = '';
var $subject = '';
var $email = '';
var $body = '';
var $error = array();
var $headers = array();

function setHeaders()
{
$this->headers = "From: $this->email\r\n";
$this->headers.= "MIME-Version: 1.0\r\n";
$this->headers.= "Content-type: text/html; charset=UTF-8\r\n";
}

function parseBody()
{
$message = '<html><body>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= '<tr style="background-color: #eee;"><td><strong>Name:</strong> </td><td>' . $this->name . '</td></tr>';
$message .= "<tr><td><strong>E-Mail-Adresse:</strong> </td><td>" . $this->email . "</td></tr>";
$message .= "<tr><td><strong>Betreff:</strong> </td><td>" . $this->subject . "</td></tr>";
$message .= "<tr><td><strong>Text:</strong> </td><td>" . $this->body . "</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
$this->body = $message;
}

function send()
{
if ($this->error)
{
return FALSE;
}

if (mail($this->to, $this->subject, $this->body, $this->headers))
{
return TRUE;
}
else
{
$this->error[] = 'Fehler beim senden';
return FALSE;
}

在主题中,我需要 utf 8 德语字符编码。我们需要在代码的什么地方声明呢?对于消息,我找到了该怎么做,但对于主题,我找不到解决方案。

最佳答案

这是我的做法:

$head = "From: \"=?ISO-8859-15?Q?".imap_8bit("äöüßÄÖÜ sollte hier gehen")."?=\" <info@mydomain.de>\n";
$subject = "=?ISO-8859-15?Q?".imap_8bit("äöüßÄÖÜ sollte hier gehen")."?=";
mail($mail,$subject,$text,$head);

那是 ofc 只是 Latin-15(德语)编码。 utf-8 的工作方式相同:在这里查看有关如何在邮件 header 中使用字符编码的很好的解释: http://ncona.com/2011/06/using-utf-8-characters-on-an-e-mail-subject/

对于您的代码,您必须在 sendmail 类中更改它:

if (mail($this->to, '=?utf-8?B?'.base64_encode($this->subject).'?=', $this->body, $this->headers))

!这只有在你的 php 文件是 utf-8 编码时才能正常工作!

还是很烦人。然后我切换到phpmailer .那为你做了一切。方式更容易。我建议您使用它。

关于php - 联系表单电子邮件中主题的 UTF-8 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17064510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com