如何更改默认邮件:php mail()中的地址

Web*_*orm 5 php

我有以下代码

$subject = "Subject Here";  
$headers  = 'MIME-Version: 1.0' . "\r\n";   
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers       
$headers .= 'From: Domain Name <domain@domain.com>' . "\r\n";           
$to = $email;
$body = '
My Message  here
';
mail($to, $subject, $body, $headers);
Run Code Online (Sandbox Code Playgroud)

并且它正确地发送邮件但是当我在gmail中看到电子邮件中的详细信息时...它显示

从域名到myemail@myemail.com日期2010年5月25日星期二下午12:41主题我的主题mailed.myhostingcompany.net

虽然我想通过部分邮寄显示我自己的地址,所以它应该是mydomain.com而不是mars.myhostingcompany.net

Leo*_*lis 5

有两种类型的发件人(发件人),MIME头发件人和envelope发件人。

您可以在mail()函数的第4个参数的标头中发送MIME发件人。你做得很好。

enveloper带有-f标志的发件人(通过sendmail或与sendmail兼容的包装器发送电子邮件时可以发送的发件人)已在第5个mail()参数中设置,additional_parameters格式为您在命令行中传递的格式-femail@address.tld

因此,您的邮件功能最终看起来像这样:

mail($to, $subject, $body, $headers, "-fdomain@domain.com");
Run Code Online (Sandbox Code Playgroud)


Jar*_*les 4

我认为您使用的是共享主机,所以它显示您的主机电子邮件地址的原因是因为当您配置 PHP 时,有一个名为“sendmail_from”的设置,如果未在其中提供地址,则该设置是发送邮件的默认地址你的代码。

您似乎在代码中指定了正确的标头,因此我只能想到一种可能性(我无法从这台计算机进行测试)。尝试删除您的电子邮件地址周围的 < > - 它可能会尝试将其读取为 HTML,因此您什么也没有。这种情况可能发生在 Windows 计算机上,因为 PHP 本身解析自定义标头,而不是 MTA(消息传输代理),并且 PHP 将任何 < > 视为 HTML。

我意识到它看起来不太专业(因为电子邮件客户端在收到电子邮件时不会显示名称),但如果您从 Windows 计算机上运行,​​那么您几乎无能为力,除非您切换到替代方案邮件包裹。

$subject = "Subject Here";  
$headers  = 'MIME-Version: 1.0' . "\r\n";   
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers       
$headers .= 'From: domain@domain.com' . "\r\n";           
$to = $email;
$body = '
My Message  here
';
mail($to, $subject, $body, $headers);
Run Code Online (Sandbox Code Playgroud)