سؤال

هل من الممكن إرسال رسائل بريد إلكتروني مع وظيفة wp_mail () التي لها نوع المحتوى الخاص بها: multipart/البديل؟

أحتاج إلى إرسال رسائل بريد إلكتروني يمكن عرضها على أنها HTML أو نص عادي اعتمادًا على الوسيلة التي تفسر البريد الإلكتروني.

أي اقتراحات مرحب بها!

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

المحلول

إنه موجود في wp_mail() توثيق (تحت الاستخدام):

نوع المحتوى الافتراضي هو "نص/عادي" لا يسمح باستخدام HTML. يمكنك تعيين نوع المحتوى للبريد الإلكتروني إما باستخدام مرشح "wp_mail_content_type '(انظر المثال أدناه) ، أو بتضمين رأس مثل" نوع المحتوى: text/html ". احرص على إعادة تعيين "wp_mail_content_type" العودة إلى "النص/عادي" بعد إرسال رسالتك, ، على الرغم من أن الفشل في القيام بذلك قد يؤدي إلى مشاكل غير متوقعة في رسائل البريد الإلكتروني من WP أو المكونات الإضافية/الموضوعات.

(التأكيد الألغام)

يوضح لك المثال الثاني على الصفحة كيفية القيام بذلك (يستخدم المثال text/html لكن يجب أن تكون قادرًا على استخدامك multipart/alternative في حين أن.

نصائح أخرى

من الممكن تمامًا عندما يكون لديك حق الوصول إلى مثيل Phpmailer.

if ($is_html) 
    add_action('phpmailer_init', 'fix_mimeheader');

// more code.

wp_mail( $to, $subject, $html_message, $headers, $attachments );

// ...

function fix_mimeheader( $phpmailer ) {
     // Generate $text_message here.
     // ...

     $phpmailer->AltBody = $text_message;
}

يجب أن تكون الرسالة المرسلة إلى WP_Mail هي رمز HTML الخاص بك. يجب أيضًا عدم تضمين أي رؤوس نوع المحتوى. أستخدم حاليًا من CC والرد في المكون الإضافي الذي قمت به.

إذا تم إرسال البريد الإلكتروني كـ HTML ، فأنا أقوم بتشغيل الإجراء الذي يعين خاصية altbody على كائن phpmailer مباشرة. هذا يتسبب بعد ذلك في تحويل الأعلام المناسبة البريد الإلكتروني إلى بريد إلكتروني متعدد/بديل.

يمكنك استخدام ال wp_mail_content_type filter, ، الذي تم توثيقه الآن في المخطوطة.

إن وثائق WP_Mail حول إعادة تعيين نوع المحتوى مرة أخرى إلى "النص/العادي" هي نوع من المضللة ، IMO. نظرًا لأن هذا مرشح ، فأنت لا "إعادة ضبط". ما تحتاج إلى مراعاته في المرشح هو بعض المنطق الشرطي لتحديد متى تحتاج إلى استخدام النص المتعدد مقابل النص العادي أو HTML:

add_filter( 'wp_mail_content_type', 'my_mail_content_type' );
function my_mail_content_type( $content_type ) {

    if( $some_condition ) {
        return 'multipart/mixed';
    } else {
        return 'text/plain';
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top