& Quot; Reply-To & Quot; в теме письма (используя php mail)

Я настроил простое электронное письмо для списка рассылки, используя php mail, и, используя найденное мной руководство, я использовал границы, чтобы отправлять его как в обычном, так и в HTML формате.

Все работает как надо, за исключением строки темы, которая отображается как

Следующее собрание Portsmouth Bootstrap Ответ: [email protected]

Я не могу определить, почему «Reply-To» также показывает. Я пытался добавить \ n и \ r, а также многие другие вещи, но не могу остановить это.

Я знаю, что существуют лучшие почтовые системы, но любой свет, который вы можете пролить на это, будет весьма признателен.

        $mail_subject="Next Portsmouth Bootstrap meeting\r\n ";
require("connectdb.php");

$sql = mysqli_query($con, "SELECT email,name  FROM maillist WHERE subscribed='1'");
if($sql === FALSE) { echo "err: ".mysqli_error($con); }

$encoding = "utf-8";
$subject_preferences = array(
"input-charset" => $encoding,
"output-charset" => $encoding,
"line-length" => 76,
"line-break-chars" => "\r\n");

while($row = mysqli_fetch_array($sql)) {
$email = $row['email'];
$name = $row['name'];
echo "name=".$name." email=".$email."<br/>";
$from_name="Portsmouth Bootstrap";
$from_mail="[email protected]";
$boundary = uniqid('np');

$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: ".$from_name." <".$from_mail."> \r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";
$headers .= "Content-Transfer-Encoding: 8bit \r\n";
$headers .= "Date: ".date("r (T)")." \r\n";
$headers .= iconv_mime_encode("Subject", $mail_subject, $subject_preferences);
$headers .= "Reply-To: [email protected]\r\n";
$headers .= "Return-Path: [email protected]\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();

$message = "This is a MIME encoded message.";
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-type: text/plain;charset=utf-8\r\n\r\n";
//Plain text body
$message .= $allmessageplain;
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-type: text/html;charset=utf-8\r\n\r\n";
$unsub = "<p>To unsubscribe from this mailing list please click <a href='https://portsmouthbootstrap.org/unsub.php?email=".$email."'>here</a></p>";
//Html body
$message .= $allmessage.$unsub;
$message .= "\r\n\r\n--" . $boundary . "--";

mail($email, $mail_subject, $message, $headers);
}

2

Решение

Вы должны добавить символы новой строки после вызова функции.

$headers .= iconv_mime_encode("Subject", $mail_subject, $subject_preferences) . "\r\n";

Без перевода строки вы запихиваете все в одну строку, но две строки должны быть разделены.

2

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

То, что вы хотите сделать, это передать заголовки в виде массива. Это избавляет вас от необходимости иметь дело со всеми этими новыми строками, что действительно было вашей первоначальной проблемой.

$headers = [
"MIME-Version"              => "1.0",
"From"                      => "$from_name <$from_mail>",
"Content-Type"              => "multipart/alternative;boundary=$boundary",
"Content-Transfer-Encoding" => "8bit",
"Date"                      => date("r (T)"),
"Subject"                   => str_replace("Subject: ", "", iconv_mime_encode("Subject", $mail_subject, $subject_preferences)),
"Reply-To"                  => "[email protected]",
"Return-Path"               => "[email protected]",
"X-Mailer"                  => "PHP/" . phpversion()
];

От документация:

additional_headers (необязательный)

Строка или массив для вставки в конец заголовка письма.

Если массив передан, его ключами являются имена заголовков, а его значения — соответствующие значения заголовков.

0

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