如何通过PHP设置电子邮件发件人的名称

19

当打开一封邮件时,我希望from字段显示为"Jack Sparrow Via somesite",而不是显示具体的电子邮件地址。

请问如何在PHP的mail()函数中进行设置?

6个回答

50

你可以使用基本的标题来实现这一点。

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: Jack Sparrow <jsparrow@blackpearl.com>' . PHP_EOL .
    'Reply-To: Jack Sparrow <jsparrow@blackpearl.com>' . PHP_EOL .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

3
请注意:当您需要使用\r\n换行时,最好使用PHP_EOL以使其兼容所有系统。 - Lawrence Cherone
3
这里是否仍然适用?据我理解,PHP_EOL给出服务器使用的行尾符,但这应该特指电子邮件头部的标准而非服务器。 - Eric Dubé

15

你需要设置头部信息:

$to = "Someone@email.com";
$header = "FROM: Jack Sparrow <some@site.com>\r\n";
$message = "Your message here.";
$subject = "Your subject";

mail($to,$subject,$message,$header) or die();

2

只需像这样使用

$headers .= 'From: [Name of the person]'.'<'. $this->from .'>'. "\n";

在页头部分。

2
$to = "Someone@email.com";
$message = "Your message here.";
$subject = "Your subject";

mail($to,$subject,$message,$header, '-f some@site.com -F "Jack Sparrow"') or die();

只需添加 -f 参数来提供发件人的电子邮件,添加 -F 参数以提供发件人的姓名给 mail(),都作为字符串。

注意:在 "Jack Sparrow" 周围使用双引号。

假设您正在Linux机器上使用sendmail:

您可以在shell中键入 "man sendmail" 以获得更详细的信息。


2
如果您使用GitHub上的PHP Mailer,则可以通过以下方式进行操作:
$mail->SetFrom("info@mibckerala.org", "MIBC");

1

我不确定你的意思,但是你可以在PHP.net邮件函数上看到。

要将名称添加到发件人部分,您需要在标题中发送以下内容。 From:Name<email@example.com>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接