PHPmailer发送给用户输入的邮件地址

时间:2017-01-26 13:23:51

标签: php phpmailer

正如问题所说。我的表单上有一个名为email的字段,用户可以在其中输入管理员电子邮件地址。 PHPmailer是否可以使用输入的电子邮件地址?

1 个答案:

答案 0 :(得分:0)

是的,但你需要小心。使用用户提交的地址作为来自地址是一个非常糟糕的主意,即执行此操作:

$mail->setFrom($_POST['email']);

这是伪造的,并且会导致您的邮件无法通过SPF检查,因此它将不会被传递,或者最终会被发送到垃圾邮件文件夹中。正确的做法是这样,使用固定的地址,但添加回复地址,以便回复转到提交者:

$mail->setFrom('me@example.com');
$mail->addReplyTo($_POST['email']);

如果您想将发送到用户提交的地址,这也很危险 - 如果您不打算成为垃圾邮件网关,则需要进行大量验证,这实际上意味着允许将地址列入白名单,像这样:

$allowed = ['bob@example.com', 'carol@example.com', 'alice@example.com'];
if (in_array($_POST['email'], $allowed)) {
    $mail->addAddress($_POST['email']);
} else {
    echo 'Bad address';
    exit;
}
相关问题