来自字段的PHP发送邮件时()

时间:2011-06-27 11:31:57

标签: php apache email

我正在使用PHP的mail()函数并注意到我的邮件是通过我的收件箱中的“我的网站”发送的,但当我点击实际的电子邮件时,它显示它是从mywebsite @ sitename发送的。 LOCALDOMAIN。

理想情况下,我想说它是从“我的网站”发送的,但是回复电子邮件是“no-reply@mywebsite.com”,而不是要对@ sitename.localdomain说些什么。

$to = trim(strtolower($_POST['to']));
$from = trim($_POST['from']);
$message = trim($_POST['message']);

$subject = $from . ' has shared a link with you';
$headers = 'From: My Website' . "\r\n" .
        'Reply-To:' . $to . "\r\n" .
        'X-Mailer: PHP/';


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

这是我需要在Apache中修复的问题,还是我可以在PHP中修改标头?

2 个答案:

答案 0 :(得分:3)

试试这个:

$to = trim(strtolower($_POST['to']));
$from = trim($_POST['from']);
$message = trim($_POST['message']);

$subject = $from . ' has shared a link with you';
$headers = 'From: My Website <no-reply@mywebsite.com>' . "\r\n" . // <- change your email here
        'Reply-To:' . $to . "\r\n" .
        'X-Mailer: PHP/';


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

答案 1 :(得分:1)

问题和答案#1包含严重的安全漏洞 -

$to = trim(strtolower($_POST['to']));

允许攻击者使用您的网站向任意垃圾邮件发送电子邮件,您的网站将被大多数搜索引擎阻止。 看到 https://www.owasp.org/index.php/Top_10_2010-A1

我的建议是

  • 清理收视率和来自字段
  • 除非仔细消毒,否则永远不要将邮件中的邮件复制到输出中。