سؤال

أحاول إرسال بريد إلكتروني MIME متعدد الأقطار / البديل عبر البرنامج النصي PHP ... كل شيء يعمل بشكل جيد ولكن لدي بعض المشاكل مع الترميز! يتم عرض الأحرف المؤمنة، في جسم البريد الإلكتروني، بشكل خاطئ في عميل البريد! كيف يمكن أن ترميز الجسم لحل هذه المشكلة؟ ... لقد حاولت استخدام ..

utf8_encode($body)

دون نتائج جيدة!

في بعض البريد الإلكتروني النسبي الخام، لاحظت أنه يتم استبدال الإزجارات من = xx (حيث xx char char الأبجدية الرقمية) ... كيف يمكنني القيام بذلك؟

شكرا مقدما!

هذا هو الرمز:

$header = "From: \n";
$header .= "Reply-To: \n";
$header .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n"; 
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";

$body .= "\n".wordwrap($txt_body, 70);

$body .= "\n\n--$alt_boundary\n";
$body .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";

$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Type: text/html; charset=utf-8\n";
$body .= "Content-Transfer-Encoding: 7bit\n";

$body .= "\n".wordwrap($html_body, 70);

$body .= "\n\n\n--$mixed_boundary\n";   
$body .= "Content-Disposition: attachment filename=\"test file\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\test file\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n";

$body .="\n$file";

$body .= "\n\n--$mixed_boundary--";
$body .= "\n\n--$alt_boundary--"; 

mail($to, $subject, $body, utf8_encode($header));

تعديل:

ال $txt_body و $html_body هي محتويات ملفين:

$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);

في تلك الملفات، استبدل بعض المعلومات التي أتلقاها من PayPal عبر IPN. لقد لاحظت أنه عندما أتلقى البريد الإلكتروني، فإن الإكمال فقط التي تحدث في معلومات IPN عرضة خطأ (بمعنى آخر المعلومات الإضافية التي استبدلتها في محتويات الملفات)! يتم عرض الأحرف الأخرى المؤمنة بشكل صحيح !!

كيف يمكنني حل هذا؟

تم حلها:

لقد حل المشكلة! يجب تطبيق الدالة UTF8_Encode () فقط على متغيرات المعلومات البابوية فقط، في الواقع أحاول تشفيرها في UTF8 The $ TXT_Body ... يتم تشفير متغيرات PayPal مرتين في UTF8. بكلمة أخرى قمت بها:

$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));

وأكثر من $ txt_body و $ html_body لقد استبدلت المعلومات المستلمة من خلال IPN!

بفضل erirebody!

هل كانت مفيدة؟

المحلول

تحتاج إلى إعلان ترميز الشخصية التي استخدمتها في رأس ذلك الجزء المحدد:

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary

--boundary
Content-Type: text/plain; charset=utf-8

This part uses UTF-8.
--boundary
Content-Type: text/plain; charset=iso-8859-1

This part uses ISO 8859-1.
--boundary--

نصائح أخرى

يمكن بسهولة إنشاء رسائل البريدية المشفرة UTF-8 مع swiftmailer.

$message->addPart($txt_body, 'text/plain', 'utf-8');
$message->addPart($html_body, 'text/html', 'utf-8');
$message->attach(Swift_Attachment::fromPath('/path/to/testfile'));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top