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

PHPmailer sending to user entered mail addresses

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

是的,但你需要小心。使用 user-submitted 地址作为 from 地址是一个非常糟糕的主意,即 不要 这样做:

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

这是伪造的,会导致您的邮件无法通过 SPF 检查,因此它要么无法投递,要么最终进入垃圾邮件文件夹。正确的做法是,使用固定的发件人地址,但添加一个 reply-to 地址,以便 do 回复到提交者:

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

如果你想发送 一个 user-submitted 地址,那也是危险的 - 如果你不想成为垃圾邮件网关,你需要大量验证,这实际上意味着将允许的地址列入白名单,如下所示:

$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;
}