Я использую PHPMailer, чтобы отправить письмо следующимПочта сломана новой строкой после отправки с PHPMailer
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
$mail->isHTML();
$mail->setFrom('[email protected]', 'server');
$mail->addReplyTo('[email protected]', 'user');
$mail->addAddress('[email protected]');
$mail->Subject = $subject;
$mail->AltBody = getPlainMail($data);
$mail->Body = getHTMLMail($data);
try {
$mail->send();
echo "SUCCESS";
} catch(phpmailerException $e) {
echo "FAILURE: ", $e->errorMessage();
}
Это отлично работает для отправки почты с использованием MAMP на моем старом добром Mac OS X, но когда я запустите этот код на сервере Linux, где он должен закончиться, что-то странное происходит с почтой. Пространства, появляющиеся случайным образом в содержимом и стилях, которые не применяются случайным образом, оказались следствием пустых строк между каждыми двумя строками в теле полученной почты. Для простого примера это может выглядеть
<!DOCTYPE html><html><head><title>Test</title></head><bo=
dy><main><section style=3D"color:red;"><p style=3D"color=
:black;">test</p></section></main></body></html>
тогда это должно быть что-то вроде
<!DOCTYPE html><html><head><title>Test</title></head><bo=
dy><main><section style=3D"color:red;"><p style=3D"color=
:black;">test</p></section></main></body></html>
для того, чтобы быть правильным. Я попытался выяснить, откуда берутся эти пустые строки, но я ничего не мог найти. Самое странное, даже может быть, что, когда я заменяю $mail->send(); echo "SUCCESS";
по
$mail->preSend();
echo htmlspecialchars($mail->getSentMIMEMessage());
я получаю ожидаемый результат.
У кого-нибудь есть идея, откуда берутся эти пустые строки? Любые подсказки оцениваются
Я помню такой вопрос некоторое время назад, и я не могу за всю свою жизнь помнить, в чем проблема: я помню, что размещал комментарий или ответ на него. Я добавил тег «linux» к вопросу, поскольку он имеет отношение к проблеме. Я попытаюсь посмотреть, не могу ли я найти его среди моих многочисленных ответов. –