как включить php html файл в почту PEAR - PullRequest
1 голос
/ 09 октября 2019

У меня есть php-файл, который я использую для рассылки новостей. Недавно я перешел на новый сервер, и они используют PEAR Mail вместо почты PHP по умолчанию для отправки почты, и мне пришлось обновить свой скрипт, чтобы он функционировал. Но это все еще не работает. Я получаю версию TXT, а не версию HTML.

Если я вручную ввожу html-коды внутри setHTMLBody (), это работает, но когда я заменяю ее своей переменной ob_start $ output_string , это не 't работа.

Вот мой сценарий;

ob_start();
include "URL/To/File.php";
$output_string = ob_get_contents();
ob_end_clean();

$headers['From'] = 'from@email.com';
$headers['Subject'] = 'Newsletter Subject';

require_once('Mail.php');
require_once('Mail/mime.php');

$message = new Mail_mime();
$message->setTXTBody("Your client doesn't support HTML.");

$message->setHTMLBody(''.$output_string.'');

$mail =& Mail::factory('mail');

$result = $mail->send('myemailaddress@gmail.com', $message->headers($headers), $message->get());

if (PEAR::isError($result)) {
echo("<span>" . $result->getMessage() . "</span>");
} else {
echo("<span style='color: #f7941c; font-weight: bold'>Congratulations! 
Your mail has been sent successfully</span>");
}

как правильно правильно ввести строку ниже? Это не работает, как сейчас.

$message->setHTMLBody(''.$output_string.'');

1 Ответ

0 голосов
/ 10 октября 2019

Так что я сейчас зациклен на этой теме (работаю на мобильном телефоне), но давайте посмотрим, смогу ли я вам помочь. Поэтому я посмотрел функцию setHTMLBody . Для типа немного нечетко, что ожидаемые параметры должны быть . В PHP вы можете получить тип, используя gettype($example) (например, console.log(typeof example); в JavaScript, хотя PHP обычно более щадителен для типов (вычисление числа, имеющего строковый тип, будет работать в PHP, а не в JavaScript)).

Название функции подразумевает, что должен сделать эту часть HTML-кода электронной почты. Теперь из всех модулей, которые я построил на своей веб-платформе, электронная почта была самой сложной не потому, что она сложна по своей сути, а потому, что она очень субъективна. Например, некоторые серверы могут ожидать, что вы будете обслуживать элемент <html>, другие - элемент <body>, а другим будет все равно, если вы его опустите (и я не уверен, что если какие-либо спецификации объявят, что здесь «уместно»),Я специально не работал со сжатием данных в электронных письмах (просто вывод в веб-почте, хотя в этом месте теряется технический контекст). Длинная история прямо здесь: пользовательский агент клиента (браузер, приложение электронной почты и т. Д.) Должен обрабатывать сжатие, а не вы.

PHP ob немного запутан. Мне не нравится та же функция / метод, которая используется как для сжатия, так и для возможности захвата и поиска / замены в выходных данных перед отправкой их клиенту. Я думаю вы используете его для сжатия, хотя вы также можете использовать его для замены битов кода по любой причине. В этом случае лучшим вариантом для устранения неполадок (при условии, что ваш ob должен работать, скорее всего, для замены битов кода) является использование строки и ее тестирование вне этой среды. Когда я тестирую задания cron, я всегда тестирую их в обычной среде first (хотя имейте в виду, что задания cron выполняются в гораздо более ограниченной среде, поэтому для отладки я просто print_r($_SERVER) отправляю мне информацию по электронной почте).

Так что я думаю, что ваш код ob испортил функцию парсера setHTMLBody(). Разбивайте код до тех пор, пока у вас не появятся рабочие биты, и , а затем добавьте к нему необходимые и все более сложные биты, пока не столкнетесь с проблемой, а затем, поскольку вы точно знаете, что только что добавили, вы сможете выделитьвыпускать намного проще.

Мне нужны дальнейшие разъяснения, хотя я могу отредактировать этот ответ позже. Дайте мне знать, где вы находитесь, я всегда проверяю уведомления, даже если это занимает день.

У меня есть несколько инструментов дюжина , которые я использую при разработке. Я не уверен, что этот инструмент будет проверен, хотя он может как-то вам помочь, так как вы работаете с электронной почтой. https://www.mail -tester.com / помог мне решить некоторые проблемы, связанные с электронной почтой (это не связано с этой проблемой).

...