[英]"Reply-To" on subject line of email (using php mail)
我已经使用 php 邮件为邮件列表设置了一个简单的电子邮件,并且使用我找到的教程,我已经使用边界以纯文本和 html 格式发送它。
除了主题行显示为
下一次朴茨茅斯 Bootstrap 会议回复:mailings@portsmouthbootstrap.org
我无法发现为什么“回复”也显示出来。 我尝试添加 \\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="mailings@portsmouthbootstrap.org";
$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: mailings@portsmouthbootstrap.org\r\n";
$headers .= "Return-Path: mailings@portsmouthbootstrap.org\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);
}
您必须在函数调用后附加换行符。
$headers .= iconv_mime_encode("Subject", $mail_subject, $subject_preferences) . "\r\n";
没有换行符,您将所有内容都塞在一行上,但这两行需要分开。
您想要做的是将标题作为数组传递。 它为您省去了处理所有这些换行符的麻烦,这确实是您最初的问题。
$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" => "mailings@portsmouthbootstrap.org",
"Return-Path" => "mailings@portsmouthbootstrap.org",
"X-Mailer" => "PHP/" . phpversion()
];
从文档:
additional_headers (可选)
要插入到电子邮件标题末尾的字符串或数组。
...
如果传递了一个数组,它的键是标头名称,其值是相应的标头值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.