【问题标题】:PHP send mail with question marks although using utf-8PHP虽然使用utf-8发送带有问号的邮件
【发布时间】:2015-11-11 19:01:50
【问题描述】:

使用以下php文件发送邮件。 但是邮件正文中不是英文的文本会得到 ????并且邮件的 $subject 会得到 "‚º ƒÂ‚«Ã"

我需要检查/添加/更改什么来修复它?

<?php include('config.php');
header('Content-Type: text/html; charset=utf-8');

class messenger
{

    public $name;
    public $number;
    public $email;
    public $address;
    public $category;
    public $tool;

    /*----------user registration start--------------*/
    function signup()
    {

        $name = $_REQUEST['name'];
        $number = $_REQUEST['number'];
        $email = $_REQUEST['email'];
        $address = $_REQUEST['address'];
        $category = $_REQUEST['category'];
        $tool = $_REQUEST['tool'];
        $datetime = date("Y-m-d H:i:s");

        //Generate the email message:
        $to = 'someEmailAddress@gmail.com';
        $subject = "הזמנת חדשה";
        $msg = "In time: " . $datetime . "\n New Power Tool Rental: \n\n            Name: " . $name . "\r\n            Email: " . $email . "\n            Mobile Number: " . $number . "\n            Address: " . $address . "\n            Category: " . $category . "\n            Tool: " . $tool . "\n\n Regards\n " . $name . " \n " . $email;
        $headers = "From:  $email" . "\r\n";
        $headers .= "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type: text/plain; charset=UTF-8";
        $headers .= "X-Mailer: PHP/" . phpversion();

        //Send the email
        mail($to, $subject, $msg, $headers);

        //Enter data to the SQL table
        $sql = "INSERT INTO user (name, number, email, address, category, tool, dateTime)
                 VALUES ('$name', '$number', '$email', '$address', '$category', '$tool','$datetime')";

        //Check if entered to SQL and if Yes send back in json message
        $result = mysql_query($sql);
        if (!$result) {
            $message["result"] = "Problemmm";
        } else {
            $mysql_insert_id = mysql_insert_id();       //get the new ID number from sql table
            $message["id"] = $mysql_insert_id;          //add the new ID data to the response message
            $message["name"] = $_REQUEST['name'];
            $message["number"] = $_REQUEST['number'];
            $message["email"] = $_REQUEST['email'];
            $message["address"] = $_REQUEST['address'];
            $message["result"] = "successfully";
        }

        //Send back the json message
        echo json_encode($message);
        die;
    }
    /*----------user registration end--------------*/
}

?>

只是想把话题改成:

$subject = "הזמנת כלי להשכרה";
$encSubject = '=?UTF-8?B?'.base64_encode($subject).'?=';

现在我得到邮件的主题: ���ú ��é ��

【问题讨论】:

标签: php email utf-8


【解决方案1】:

设置标题是不够的。

subject(必须是 RFC 2047)和 message(在你的情况下必须是 UTF-8)也有各自正确的编码,php::mail doc + user-notes 涵盖了你错过的大部分内容。

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 2015-12-06
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2015-08-24
    • 2014-11-06
    相关资源
    最近更新 更多