2016-02-23 3 views
0

Я пытаюсь отправить почту из моего плагина wordpress, но когда я его извлекаю, у него нет стилей или изображений.wp_mail wordpress html со стилем, не приближающимся

Я делаю это так:

<?php 
$headers = array(
    "From: Enara <[email protected]>", 
    "MIME-Version: 1.0", 
    "Content-type: text/html; charset=UTF-8'" 
); 
$message = "<html> 
    <head> 
     <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 
    </head> 
    <body> 
     <div style='background-color: #16a085;'> 
      <table> 
       <tr><td colspan='2'><img style=\'margin-botton: 20px;\' src='http://enara.litrodeenergia.com/wp-content/uploads/2015/12/enara-white.png' /></td></tr> 
       <tr><td colspan='2'>DATOS DE CLIENTE</td></tr> 
       <tr><td colspan='2'>$particular</td></tr> 
       <tr> 
        <td>Nombre:</td> 
        <td>$nombre<br></td> 
       </tr> 
       <tr> 
        <td>Apellidos:</td> 
        <td>$apellidos</td> 
       </tr> 
       <tr> 
        <td>Nif:</td> 
        <td>$nif</td> 
       </tr> 
       <tr> 
        <td>Tel&eacute;fono:</td> 
        <td>$telefono</td> 
       </tr> 
      </table> 
     </div> 
    </body> 
</html>"; 

$result = new stdClass(); 
$result->mailOk = wp_mail($to, $subject, $message, $headers); 

я попробовал код стиля в моей голове, удалять блоки HTML/голова/тело (только отправить ДИВ HTML-код), изменил тип содержимого для iso, и сделал wp-фильтр wp_mail_content_type 'text/html'.

Изображение не работает также.

Если я отладки получил письмо с Devtools, я вижу:

<div style="background-color:#16a085"> 
<table> 
<tbody> 
    <tr> 
     <td colspan="2"><img src="http://enara.litrodeenergia.com/wp-content/uploads/2015/12/enara-white.png" style=""></td> 
    </tr> 
    <tr> 
     <td colspan="2">DATOS DE CLIENTE</td> 
    </tr> 
    <tr> 
     <td colspan="2">Usuario particular</td> 
    </tr> 
    <tr> 
     <td>Nombre:</td> 
     <td>afsd<br> 
    </td> 
    </tr> 
    <tr> 
     <td>Apellidos:</td> 
     <td></td> 
    </tr> 
    <tr> 
     <td>Nif:</td> 
     <td></td> 
    </tr> 
    <tr> 
     <td>Teléfono:</td> 
     <td></td> 
    </tr> 
</tbody> 
</table> 

И электронной почты заголовки:

Received: from server 
Received: from 
Subject: Formulario Alta Usuario Web 
X-PHP-Script: 
Date: Tue, 23 Feb 2016 11:07:52 +0000 
From: 
Message-ID: <[email protected] 
X-Mailer: PHPMailer 5.2.14 (https://github.com/PHPMailer/PHPMailer) 
MIME-Version: 1.0 
Content-Type: text/html; charset="UTF-8'" 
Content-Transfer-Encoding: 8bit 
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report 
X-AntiAbuse: Primary Hostname - 
X-AntiAbuse: Original Domain - 
X-AntiAbuse: Originator/Caller UID/GID - [500 495]/[47 12] 
X-AntiAbuse: Sender Address Domain - 
X-Get-Message-Sender-Via: 
X-Authenticated-Sender: 
X-Source: /usr/bin/php 
X-Source-Args: /usr/bin/php /home/public_html/ 
X-Source-Dir: litrodeenergia.com:/public_html/ 
Return-Path: 
X-MS-Exchange-Organization-Antispam-Report: IPOnAllowList 
X-MS-Exchange-Organization-SCL: -1 
+0

почему вам нужно добавить обратная косая черта в этом? 'style = \ 'margin-botton: 20px; \'' должен быть 'style = 'margin-botton: 20px;'' – Aziz

+0

Это был тест, он не работает без \ – msolla

+0

Логически, если вы используете ' 'для строки эха, вам придется избегать двойных кавычек с обратным слэшем, однако для одной цитаты' '' не требуется экранирование ... – Aziz

ответ

0

Это может быть лучше, если вы поставите код, как вы использовали wp_mail_content_type

Вы должны фильтровать тип содержимого перед вызовом wp_mail() Например:

add_filter('wp_mail_content_type', function($content_type) { 
      return 'text/html'; 
}); 

wp_mail('[email protected]', 'The subject', '<div>The message</div>'); 
0

Попробуйте добавить

add_filter('wp_mail_content_type',create_function('', 'return "text/html"; ')); 

Кажется по по умолчанию wp_mail() возвращает text/plain.

Вы можете использовать функцию wp_mail() WordPress для отправки писем с вашего сайта WordPress. Тем не менее, тип содержимого по умолчанию - «text/plain», который не позволяет использовать HTML. Если вы хотите отправить HTML-письма, вам нужно будет указать тип содержимого сообщения «text/html», используя фильтр «wp_mail_content_type».

Источник: How to Send HTML Emails From WordPress

Редактировать

Проблема, как представляется, связано с почтового клиента визуализации содержимого HTML.

+0

Извините, если мой вопрос не ясен, я тестировал этот фильтр, но получаю тот же результат. – msolla

+0

Хм, это странно. Можете ли вы проверить почту с помощью devtools проверить выходные данные? Также проверьте заголовки в полученном электронном письме – Aziz

+0

Выход в devtools:

DATOS DE CLIENTE
Usuario particular
Nombre: afsd
Apellidos:
Nif:
Teléfono:
msolla

Смежные вопросы