문제

컨텐츠 유형이있는 WP_Mail () 함수로 이메일을 보낼 수 있습니까?

이메일을 해석하는 매체에 따라 HTML 또는 일반 텍스트로 표시 될 수있는 이메일을 보내야합니다.

모든 제안을 환영합니다!

도움이 되었습니까?

해결책

바로 거기에 있습니다 wp_mail() 선적 서류 비치 (아래에 용법):

기본 컨텐츠 유형은 '텍스트/일반'이며 HTML을 사용하지 않습니다. 'WP_MAIL_CONTENT_TYPE'필터 (아래 예 참조)를 사용하여 "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로 전송되는 경우 Phpmailer 객체에서 AltBody 속성을 직접 설정하는 조치를 실행합니다. 그런 다음 적절한 플래그가 이메일을 멀티 파트/대체 이메일로 변환합니다.

당신은 사용할 수 있습니다 wp_mail_content_type 필터, 이제 코덱스에 문서화되었습니다.

컨텐츠 유형을 'Text/Plain'으로 다시 재설정하는 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