Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 发送邮件时字符错误_Utf 8_Php - Fatal编程技术网

Utf 8 发送邮件时字符错误

Utf 8 发送邮件时字符错误,utf-8,php,Utf 8,Php,我在PHP中使用mail()函数发送电子邮件时遇到了字符设置问题 我在其中编写PHP代码的实际文件是UTF-8字符集。我还确保在电子邮件的标题中设置了charset=UTF-8,我甚至在标题中为基本HTML内容添加了一个meta标记。但是,它仍然不起作用 以下是PHP代码的外观: // Prepare the e-mail to the GUEST $to = $email; $subject = "PÅMINNELSE: Bekräfta registrering för Event"; /

我在PHP中使用mail()函数发送电子邮件时遇到了字符设置问题

我在其中编写PHP代码的实际文件是UTF-8字符集。我还确保在电子邮件的标题中设置了charset=UTF-8,我甚至在标题中为基本HTML内容添加了一个meta标记。但是,它仍然不起作用

以下是PHP代码的外观:

// Prepare the e-mail to the GUEST
$to = $email;
$subject = "PÅMINNELSE: Bekräfta registrering för Event";

// Defining the headers
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
$headers .= "From: Pre-registration <event@adomain.com>" . "\r\n";

include("gemailreminder.php");

// Send the mail now!
mail($to, $subject, $message, $headers);
//准备给客人的电子邮件
$to=$email;
$subject=“PÅMINNELSE:Bekräfta登记för事件”;
//定义标题
$headers=“MIME版本:1.0”。“\r\n”;
$headers.=“内容类型:text/html;字符集=UTF-8”。“\r\n”;
$headers.=“发件人:预注册”。“\r\n”;
包括(“gemailrementer.php”);
//现在就发邮件!
邮件($to、$subject、$message、$headers);
包含的文件gemailRemembers.php的内容如下所示:

<?php
$message = <<< MESSAGE
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>REMINDER E-MAIL</title>
</head>
<body>
<p >text...</p >
</body>
</html>
MESSAGE;
?>

有什么建议可以帮我解决这个问题吗

提前谢谢


//Andreas

包含非ascii字符的电子邮件内容必须使用base64编码发送

使用PHP的
base64_encode()
函数很容易做到这一点,但坦率地说,在使用PHP的
mail()
函数时,有太多类似的怪癖需要注意

我的建议是使用已经编写的现有类mailer类中的一个,它为您完成了所有艰苦的工作——不再弄乱标题,不再担心编码,发送附件变得容易等等

通常推荐的a类和类


使用它们中的任何一个,我保证您再也不想直接调用旧的
mail()
函数了。

您必须将gemailrementer.php保存在utf-8中,使用您的编辑器设置来完成此操作。

仅供参考:

出于某种奇怪的原因,它突然又开始工作了。 也许我的webhotel提供商在那里的一段时间内在服务器或设置上出现了一些问题

我感谢你花时间和精力提供答案。我仍然会更加熟悉Swiftmailer和phpMail这两个类

真诚地,
Andreas

您使用过瑞典语吗?@VIVEK-MDU是的,这是电子邮件中的瑞典语字符。您可以将charset=UTF-8“更改为charset=ISO-8859-1”更改为charset=ISO-8859-1“更改此$headers可能对您有帮助。=“内容类型:text/html;charset=ISO-8859-1”。“\r\n”@VIVEK-MDU问题是,我确实使用存储在UTF-8中的信息查询数据库,因此我的推理是,如果我在UTF-8中始终如一地执行所有操作,我将不会遇到任何问题。谢谢您的回复。奇怪的是,它已经起作用了,但现在突然不起作用了。我将研究如何使用Swiftmailer或phpMailer类。我所有的PHP文件都是用utf-8编写的。