完整的邮件标题

joh*_*ack 17 php email

我需要一组邮件头来附加到我mail()的PHP函数.我发送带有HTML的电子邮件,有时像Yahoo Mail这样的服务阻止它们.因此,我需要确保我至少提供正确的标题.

我的代码:

// To send HTML mail, the 'Content-type' header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: MyCompany <welcome@mycompany.com>' . "\r\n";  
Run Code Online (Sandbox Code Playgroud)

还有什么我应该补充的吗?

Roh*_*bey 31

    $headers  = "From: testsite < mail@testsite.com >\n";
    $headers .= "Cc: testsite < mail@testsite.com >\n"; 
    $headers .= "X-Sender: testsite < mail@testsite.com >\n";
    $headers .= 'X-Mailer: PHP/' . phpversion();
    $headers .= "X-Priority: 1\n"; // Urgent message!
    $headers .= "Return-Path: mail@testsite.com\n"; // Return path for errors
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";
Run Code Online (Sandbox Code Playgroud)

  • 这里唯一的答案给了我正在寻找的东西(我猜想,问题的原始提问者) (3认同)
  • 很好的答案,但不是`\n`你应该在PHP中使用`PHP_EOL`. (2认同)
  • 这只是我还是这个答案错过了`phpversion()之后的回复?我宁愿把它写成`$ headers.="X-Mailer:PHP /".phpversion()."\ r \n"` (2认同)
  • 另一个有用的配置,隐藏"来自:John Doe <john_doe@mydomain.com>通过p3plkldnl1234.prod.phk3.somehostingserver.net",将使用此邮件($ to,$ subject,$ body,$ headers, '-f john_doe@mydomain.com'); (2认同)

oel*_*lna 8

PHP 7.2+ 解决方案

在当前版本的 PHP 中,可以传递一个标头数组(如PHP 文档mail()中所述),因此代码可能看起来更干净一些。(Sablefoste在对当前最佳答案的评论中提到了这一点。)

如果有人感兴趣,它可能看起来像这样:

$headers = [
    'From' => 'testsite <mail@testsite.com>',
    'Cc' => 'testsite <mail@testsite.com>',
    'X-Sender' => 'testsite <mail@testsite.com>',
    'X-Mailer' => 'PHP/' . phpversion(),
    'X-Priority' => '1',
    'Return-Path' => 'mail@testsite.com',
    'MIME-Version' => '1.0',
    'Content-Type' => 'text/html; charset=iso-8859-1'
];

mail('recipient@host.com', 'My subject', 'My message', $headers);
Run Code Online (Sandbox Code Playgroud)


Jas*_*per 1

该邮件真的来自“mycompany.com”吗?我遇到过一些邮件服务阻塞的问题,如果它不是真正来自邮件所说的SMTP服务器。

对我来说,解决这个问题的方法是将发件人设置为 automail@mydomainnaim.com 并添加reply-to,作为使用我的系统发送邮件的人。