برگزیده های پرشین تولز

ناخوانا بودن متون فارسی در ایمیل

imahdi75

کاربر تازه وارد
تاریخ عضویت
1 اکتبر 2020
نوشته‌ها
17
لایک‌ها
3
سلام دوستان.
برای دریافت ایمیل از سایتم توی قالب html از یک فایل php با کد زیر استفاده میکنم... مشکلش اینه که وقتی متن و فیلد به صورت فارسی پر میشن متون به صورت ناخوانا برای من گیرنده ارسال میشه. ممنون میشم کمک کنید:
کد:
<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = strip_tags(trim($_POST["name"]));
                $name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $message = trim($_POST["message"]);

        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            http_response_code(400);
            echo "Oops! There was a problem with your submission. Please complete the form and try again.";
            exit;
        }
        $recipient = "[email protected]";

        $subject = "New contact from $name";

        $email_content = "Name: $name\n";
        $email_content .= "Email: $email\n\n";
        $email_content .= "Message:\n$message\n";

        $email_headers = "From: $name <$email>";

        if (mail($recipient, $subject, $email_content, $email_headers)) {
            http_response_code(200);
            echo "متشکریم! پیام شما با موفقیت ارسال شد.";
        } else {
            http_response_code(500);
            echo "اوه! مشکلی پیش آمد و ما نتوانستیم پیام شما را ارسال کنیم.";
        }

    } else {
        http_response_code(403);
        echo "ارسال شما مشکلی داشت، لطفاً دوباره امتحان کنید.";
    }

?>
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,054
لایک‌ها
8,683
محل سکونت
ROOT
میبایست انکدینگ متن رو بصورت utf-8 به سیستم مقصد معرفی کنید تا حروف خوانا بشه

PHP:
<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = strip_tags(trim($_POST["name"]));
                $name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $message = trim($_POST["message"]);

        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            http_response_code(400);
            echo "Oops! There was a problem with your submission. Please complete the form and try again.";
            exit;
        }
        $recipient = "[email protected]";

        $subject = "New contact from $name";

        $email_content = "Name: $name\n";
        $email_content .= "Email: $email\n\n";
        $email_content .= "Message:\n$message\n";

        $email_headers = "From: $name <$email>\r\n";
        $email_headers = 'Content-Type: text/html; charset=utf-8';

        if (mail($recipient, $subject, $email_content, $email_headers)) {
            http_response_code(200);
            echo "متشکریم! پیام شما با موفقیت ارسال شد.";
        } else {
            http_response_code(500);
            echo "اوه! مشکلی پیش آمد و ما نتوانستیم پیام شما را ارسال کنیم.";
        }

    } else {
        http_response_code(403);
        echo "ارسال شما مشکلی داشت، لطفاً دوباره امتحان کنید.";
    }

?>



اگر کد بالا جواب نداد، راه حل نهایی استفاده از base64 هست. نمونه:
 

imahdi75

کاربر تازه وارد
تاریخ عضویت
1 اکتبر 2020
نوشته‌ها
17
لایک‌ها
3
میبایست انکدینگ متن رو بصورت utf-8 به سیستم مقصد معرفی کنید تا حروف خوانا بشه

PHP:
<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = strip_tags(trim($_POST["name"]));
                $name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $message = trim($_POST["message"]);

        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            http_response_code(400);
            echo "Oops! There was a problem with your submission. Please complete the form and try again.";
            exit;
        }
        $recipient = "[email protected]";

        $subject = "New contact from $name";

        $email_content = "Name: $name\n";
        $email_content .= "Email: $email\n\n";
        $email_content .= "Message:\n$message\n";

        $email_headers = "From: $name <$email>\r\n";
        $email_headers = 'Content-Type: text/html; charset=utf-8';

        if (mail($recipient, $subject, $email_content, $email_headers)) {
            http_response_code(200);
            echo "متشکریم! پیام شما با موفقیت ارسال شد.";
        } else {
            http_response_code(500);
            echo "اوه! مشکلی پیش آمد و ما نتوانستیم پیام شما را ارسال کنیم.";
        }

    } else {
        http_response_code(403);
        echo "ارسال شما مشکلی داشت، لطفاً دوباره امتحان کنید.";
    }

?>



اگر کد بالا جواب نداد، راه حل نهایی استفاده از base64 هست. نمونه:
راه حل بالا رو قبلا رفته بودم ج نداده بود. روش دوم هم باید بشینم ترجمه کنم چی گفته.
 

فایل های ضمیمه

  • Screenshot-20201008003341-564x42.png
    Screenshot-20201008003341-564x42.png
    6.3 KB · نمایش ها: 2

imahdi75

کاربر تازه وارد
تاریخ عضویت
1 اکتبر 2020
نوشته‌ها
17
لایک‌ها
3
میبایست انکدینگ متن رو بصورت utf-8 به سیستم مقصد معرفی کنید تا حروف خوانا بشه

PHP:
<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = strip_tags(trim($_POST["name"]));
                $name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $message = trim($_POST["message"]);

        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            http_response_code(400);
            echo "Oops! There was a problem with your submission. Please complete the form and try again.";
            exit;
        }
        $recipient = "[email protected]";

        $subject = "New contact from $name";

        $email_content = "Name: $name\n";
        $email_content .= "Email: $email\n\n";
        $email_content .= "Message:\n$message\n";

        $email_headers = "From: $name <$email>\r\n";
        $email_headers = 'Content-Type: text/html; charset=utf-8';

        if (mail($recipient, $subject, $email_content, $email_headers)) {
            http_response_code(200);
            echo "متشکریم! پیام شما با موفقیت ارسال شد.";
        } else {
            http_response_code(500);
            echo "اوه! مشکلی پیش آمد و ما نتوانستیم پیام شما را ارسال کنیم.";
        }

    } else {
        http_response_code(403);
        echo "ارسال شما مشکلی داشت، لطفاً دوباره امتحان کنید.";
    }

?>



اگر کد بالا جواب نداد، راه حل نهایی استفاده از base64 هست. نمونه:
داداش یه لطفی می کنید یه دستی به کد بالا بزنید کار ما راه بیفته؟
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,054
لایک‌ها
8,683
محل سکونت
ROOT
راه حل بالا رو قبلا رفته بودم ج نداده بود. روش دوم هم باید بشینم ترجمه کنم چی گفته.
ترجمه نیاز نیست نمونه کد گذاشته. فقط کافیه کد رو کپی و استفاده کنید.

این کد باید مشکلتون رو حل کنه:

PHP:
<?php
header('Content-Type: text/html; charset=utf-8');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = strip_tags(trim($_POST["name"]));
            $name = str_replace(array("\r","\n"),array(" "," "),$name);
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
    $message = trim($_POST["message"]);

    if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        http_response_code(400);
        echo "Oops! There was a problem with your submission. Please complete the form and try again.";
        exit;
    }
    
    $recipient_email_address = "[email protected]";
    $recipient_name = "Ye bande Khoda";
    
    $sender_email_address = "[email protected]";
    $sender_name = "YourName";

    $subject_text = "New contact from $name";

    $email_content = "Name: $name\n";
    $email_content .= "Email: $email\n\n";
    $email_content .= "Message:\n$message\n";
    
    $email_headers = 'Content-Type: text/plain; charset=utf-8' . "\r\n";
    $email_headers .= 'Content-Transfer-Encoding: base64'. "\r\n";
    $email_headers .= 'From: =?UTF-8?B?' . base64_encode($sender_name) . '?= <'.$sender_email_address.'>';
    
    $subject = '=?UTF-8?B?' . base64_encode($subject_text) . '?=';
    $recipient = '=?UTF-8?B?' . base64_encode($recipient_name) . '?= <'.$recipient_email_address.'>';
    if (mail($recipient, $subject, base64_encode($email_content), $email_headers)) {
        http_response_code(200);
        echo "متشکریم! پیام شما با موفقیت ارسال شد.";
    } else {
        http_response_code(500);
        echo "اوه! مشکلی پیش آمد و ما نتوانستیم پیام شما را ارسال کنیم.";
    }

} else {
    http_response_code(403);
    echo "ارسال شما مشکلی داشت، لطفاً دوباره امتحان کنید.";
}

?>
 
بالا