如何显示只有名称,而不是发件人的电子邮件地址在一个简单的php邮件脚本


How to show only the name instead of the email address of the sender in a simple php mail script

我有一个简单的php邮件脚本,将发送电子邮件。

问题是在发送它时显示sendername <senderemail@domain.com>

我在代码中给出了$headers = "From: $name <$senderEmail>";

我想只显示发件人的姓名而不显示发件人的电子邮件地址。

我该怎么做?

这是完整的程序。

<?php
if($_POST["submit"]) {
    $recipient=$_POST["senderemail"];
    $subject=$_POST["subject"];
    $name=$_POST["name"];
    $senderEmail=$_POST["email"];
    $city=$_POST["city"];
    $headers = "From: $name <$senderEmail>";
    $mailBody="$city'n";
    $process=explode(",",$recipient);
    reset($process);
    foreach ($process as $to) {
        mail($to,$subject, $mailBody,$headers);
    }
    $thankYou="<p>Thank you! Your Message has been sent.</p>";
    echo 'Thank you! Your Message has been sent.';
}
?>

包含名称和地址的From头应该像这样格式化:

From: User Name <user@example.com>

如果你没有提供名字,它将显示电子邮件地址。

PHPMailer内置支持通过FromFromName属性为您正确创建此头,以及setFrom方法(无论您使用哪个):

$mail->setFrom('user@example/com', 'User Name');

$mail->From = 'user@example/com';
$mail->FromName = 'User Name';

您生成的消息似乎已经在From:头中包含了用户的全名(假设$name是人类可读的名称)。单个用户代理如何显示这些信息不再由您控制。通常,它会不顾一切地显示这两个部分;或者,如果发件人的电子邮件地址在收件人的地址簿中,则只缩短为人类可读的名称。(Thunderbird更进一步,从地址簿中显示信息,而不是消息中的实际信息!)

一个常见的问题是如果生成的消息有不同的Sender:头;通常,这将导致收件人的用户代理显示的不仅仅是通常的全名。你的问题没有提到这一点,也没有显示其中一个生成的消息;但也许这将帮助你找到一个解决方案。

相关文章: