如何更改php代码以解决字符编码问题?

How to change php code to solve character coding issue?

提问人:Bálint Forgács 提问时间:10/14/2023 最后编辑:OlivierBálint Forgács 更新时间:10/17/2023 访问量:64

问:

我写了这个php电子邮件发件人代码:

<?php

if($_SERVER["REQUEST_METHOD"] === "POST") {}


if (isset($_POST['submit'])) {
$name = $_POST['name'];
$subject = $_POST['subject'];
$mailFrom = $_POST['mail'];
$phone = $_POST['phone'];
$company = $_POST['company'];
$website = $_POST['website'];
$message = $_POST['message'];

$recaptcha_secret = "xy";
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
$response = json_decode($response, true);

if($response["success"] === true){
    $mailTo = "[email protected]";
    $headers = "From: ".$mailFrom;
    $txt = "Feladó: ".$name."\nTelefonszám: ".$phone."\nCég: ".$company."\nWeboldal: ".$website."\n\nÜzenet: ".$message;

mail($mailTo, $subject, $txt, $headers);
header("Location: feedback/koszonjuk");
    
    
}else{
    header("Location: feedback/error");
}

}

?>`

有人在我的网站上用 recaptcha 填写我的表格后,它会将电子邮件发送到我的服务器端电子邮件地址。

我想以 UTF-8 字符编码接收电子邮件,但我看不到问题。这些字符在以下表单中的电子邮件中管理不善:öüóőúéá

表单所在的 HTML 页面设置为 UTF-8。 HTML 表单代码:

<form action="ajanlatkeres.php" method="post" class="ajanlatkeres-form" accept-charset="utf-8">
                    <h2>Általános adatok</h2>
                        <input type="text" name="name" placeholder="Teljes név*" class="feedback-input" required>
                        <input type="text" name="mail" placeholder="E-mail*" class="feedback-input" required>
                        <input type="text" name="phone" placeholder="Telefonszám*" class="feedback-input" required>
                    <h2>Vállalkozás adatai</h2>
                        <input type="text" name="company" placeholder="Márkanév" class="feedback-input">
                        <input type="text" name="website" placeholder="Weboldal" class="feedback-input">
                    
                    <h2>Üzenet</h2>
                        <input type="hidden" name="subject" value="Ajánlatkérés">
                        <textarea name="message" placeholder="Írj pár sort projektedről*" class="feedback-input" required></textarea>
                        <div class="g-recaptcha" id="rcaptcha" data-theme="dark" data-sitekey="xy"></div>
                        <br/>
                        <button id="submit_form" class="contactbutton" type="submit" name="submit">Küldés</button>
                    </form>

什么原因会导致此问题?它在我的 php 代码中吗?

PHP 电子邮件 UTF-8

评论

0赞 Olivier 10/14/2023
这回答了你的问题吗?PHP电子邮件编码?
0赞 Bálint Forgács 10/14/2023
谢谢你的评论。在那个链接上,我找到了这个:Content-Type:text/plain;charset=utf-8 ->这似乎是个好主意,因为我的电子邮件是文本电子邮件,但它没有任何帮助。我尝试在我的 php 开头或标题发送器部分添加此代码,但什么都没有。
0赞 Olivier 10/14/2023
试这个(只需替换为 )。text/htmltext/plain
0赞 lukas.j 10/14/2023
php.net/manual/en/function.mail.php 查看 PHP 手册,尤其是示例 #5 发送 HTML 电子邮件部分。
0赞 Bálint Forgács 10/14/2023
感谢您的评论,我试图实现这些,但不幸的是没有任何帮助

答:

-1赞 BugHunter 10/17/2023 #1

尝试在标头中设置content-type and character encoding

$headers = "From: " . $mailFrom . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=UTF-8\r\n";

评论

0赞 mickmackusa 10/17/2023
Olivier 早些时候建议提问者看看这个潜在的解决方案,它已经在 Stack Overflow 上可用了。PHP电子邮件编码?在发布答案之前,请阅读评论和其他答案。我们不想用多余的建议来膨胀 Stack Overflow。此答案不会为 Stack Overflow 增加任何新价值。