Wordpress의 wp_mail 기능을 사용하여 HTML 형식의 전자 메일을 보내는 방법이 있습니까?


41

이것을 달성하는 데 도움이되는 action_hook 또는 이와 유사한 것이 있습니까?

PHP 문자열 변수에 마크 업을 추가하려고 시도했고 wp_mail 함수를 사용하여 이메일을 시작했습니다.

$email_to = 'someaddress@gmail.com';
$email_subject = 'Email subject';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);

그러나 그것은 평문으로 나타 났습니까?

어떤 아이디어?

답변:


58

에서 wp_mail 사본 페이지 :

기본 컨텐츠 유형은 'text / plain'이며 HTML 사용을 허용하지 않습니다. 그러나 'wp_mail_content_type'필터를 사용하여 이메일의 컨텐츠 유형을 설정할 수 있습니다.

// In theme's functions.php or plug-in code:

function wpse27856_set_content_type(){
    return "text/html";
}
add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

1
흠 소리가 유용합니다. 그냥 질문, 왜 wpse27856_set_content_type 함수의 이름을 지정한 특별한 이유가 있습니까?
racl101

13
아니요,이 특정 질문의 ID를 기반으로 한 고유 한 이름 일뿐입니다. wpse = wp stachexchange, 27856은 URL에서이 질문의 ID입니다. 사람들이 여기에서 코드를 복사 / 붙여 넣을 경우 잠재적 충돌을 피하기 위해 그렇게합니다.
Milo

2
이메일 헤더에 Content-Type을 포함시킬 수도 있습니다. Notifly 플러그인이 어떻게 작동하는지 확인하십시오.
Otto

아 그래 내가 무슨 n00b. 이 게시물의 ID 인 것 같습니다.
racl101

1
재설정 링크가 <>로 묶여 있기 때문에 비밀번호 재설정 이메일이 중단됩니다.
Simon Josef Kok

89

대안으로 $ headers 매개 변수에 Content-Type HTTP 헤더를 지정할 수 있습니다.

$to = 'sendto@example.com';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $to, $subject, $body, $headers );

2
add_filter가 때때로 첨부 파일로 표시되므로 더 잘 작동합니다. 공유해 주셔서 감사합니다!
deepakssn

10

wp_mail 함수를 사용한 후에 컨텐츠 유형 필터를 제거하는 것을 잊지 마십시오. 허용되는 답변의 이름을 지정한 후에 wp_mail이 실행 된 후에이 작업을 수행해야합니다.

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

이 티켓을 확인하십시오-컨텐츠 유형을 재설정하여 충돌을 피하십시오-http: //core.trac.wordpress.org/ticket/23578


7
이것은 대답이 아니라 의견이어야합니다.
Bob Diego

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.