正如问题所说。我的表单上有一个名为email的字段,用户可以在其中输入管理员电子邮件地址。 PHPmailer是否可以使用输入的电子邮件地址?
答案 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;
}