Я использую Swift Mailer, но получаю странный вывод, например:
--_=_swift_v4_1421068500_80a78fd29e619e918b1c16e227289934500e81e7_=_
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Website EnquiryName - nameEmail - [email protected] - te=
lephoneCompany - companyMessage - message
--_=_swift_v4_1421068500_80a78fd29e619e918b1c16e227289934500e81e7_=_
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<h2>Website Enquiry</h2><p><strong>Name</strong> name</p><p><strong=
>Email</strong> [email protected]</p><p><strong>Telephone</strong> teleph=
one</p><p><strong>Company</strong> company</p><p><strong>Message</strong><b=
r />message</p>
--_=_swift_v4_1421068500_80a78fd29e619e918b1c16e227289934500e81e7_=_--
Я отправляю письмо следующим образом:
<?php
if ( $_SERVER['REQUEST_METHOD'] != 'POST' ) {
die();
}
require_once '../swiftmailer/lib/swift_required.php';
$name = utf8_encode(htmlentities($_POST['name'], ENT_QUOTES, "UTF-8"));
$email = utf8_encode(htmlentities($_POST['email'], ENT_QUOTES, "UTF-8"));
$telephone = utf8_encode(htmlentities($_POST['telephone'], ENT_QUOTES, "UTF-8"));
$company = utf8_encode(htmlentities($_POST['company'], ENT_QUOTES, "UTF-8"));
$message = utf8_encode(htmlentities($_POST['message'], ENT_QUOTES, "UTF-8"));
$to = "[email protected]"; // Removed for Stack Overflow demo.
$subject = "Website Enquiry";
$htmlMessage = "<h2>Website Enquiry</h2>";
$htmlMessage .= "<p><strong>Name:</strong> " . $name . "</p>";
$htmlMessage .= "<p><strong>Email:</strong> " . $email . "</p>";
$htmlMessage .= "<p><strong>Telephone:</strong> " . $telephone . "</p>";
$htmlMessage .= "<p><strong>Company:</strong> " . $company . "</p>";
$htmlMessage .= "<p><strong>Message:</strong><br />" . nl2br($message) . "</p>";
$plainMessage = "Website Enquiry";
$plainMessage .= "Name: " . $name . "";
$plainMessage .= "Email: " . $email . "";
$plainMessage .= "Telephone: " . $telephone . "";
$plainMessage .= "Company: " . $company . "";
$plainMessage .= "Message: " . $message . "";
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
->setSubject($subject)
->setFrom(array($email => $name))
->setTo(array($to => $subject))
->setContentType("text/html; charset=UTF-8")
->setBody($plainMessage, 'text/plain')
->addPart($htmlMessage, 'text/html');
$result = $mailer->send($message);
?>
Желательно, чтобы я отправлял электронное письмо в формате HTML, но я также хочу текстовую версию. Приведенный выше код выглядит хорошо во всех отношениях, которые я вижу, поэтому не уверен, почему я получаю странный вывод заголовков писем — возможно, проблема с кодировкой символов?
Любая помощь или направление с благодарностью!
Спасибо,
Майкл
Я использовал версию DEV — Swift-5.3.1-DEV (поэтому возможно нестабильную).
После перехода на последнюю стабильную версию Swift-5.3.0 я вижу, что эта проблема исчезла.
Я не использовал Composer для установки последней стабильной версии, но вместо этого обнаружил, что использую ZIP из учетной записи SwiftMailer на GitHub. Эта версия является версией DEV, поэтому убедитесь, что вы получаете последнюю стабильную версию: https://github.com/swiftmailer/swiftmailer/releases
Надеюсь это поможет.
Других решений пока нет …