Отправка электронной почты Post в WordPress с помощью специальных символов

Я создал плагин, который будет отправлять электронное письмо каждый раз, когда в WordPress публикуется новое сообщение для администратора (в конце концов, оно будет отправлено подписчикам). В моем плагине у меня есть шаблон электронной почты в табличном формате, который приведен ниже.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Email test</title>
</head>
<body>
<table cellpadding="0" cellspacing="0" border="0" id="backgroundTable">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td width="20" valign="top"></td>
<td width="560" valign="top">%%CONTENT%%</td>
<td width="20" valign="top"></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

Я заменяю строку %% CONTENT %% содержимым поста. Я попытался запустить контент через различные функции и фильтры, в том числе: apply_filters, htmlspecialchars () и htmlentities (), но безуспешно. Когда я получаю письмо в Outlook, в нем есть странные символы. Мой пост содержит некоторые специальные символы, такие как £, &, «,’ И символ степени ° C.

Это код плагина:

function post_published_notification( $ID, $post ) {
global $post;
$author = $post->post_author; /* Post author ID. */
$name = get_the_author_meta( 'display_name', $author );
$email = get_the_author_meta( 'user_email', $author );
$title = $post->post_title;
$to[] = sprintf( '%s <%s>', $name, $email );
$subject = sprintf( 'Published: %s', $title );

$content = $post->post_content;
$content = apply_filters('the_content', $content);

$html_content = file_get_contents(__DIR__.'/email_components/email.html');
$message = str_replace('%%CONTENT%%', $content, $html_content);

$headers[] = 'MIME-Version: 1.0' . "\r\n";
$headers[] = 'Content-type: text/html; charset="UTF-8' . "\r\n";

wp_mail( $to, $subject, $message, $headers );
}
add_action( 'publish_post', 'post_published_notification', 10, 2 );

Поэтому мой вопрос заключается в том, как сделать так, чтобы эти символы безопасно отображались в теме и теле письма? Большое спасибо! Майк

0

Решение

В конце концов, попробовав много разных опций, я решил эту проблему, используя цикл wordpress для вывода содержимого моей электронной почты:

$thepost = new WP_Query('post_type=news&p='.$post_id);
if($thepost->have_posts()) {
while($thepost->have_posts()) {
//runs once to get the one queried post
$thepost->the_post();
$content = wpautop(get_the_content());
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]