PHP如何防止邮件在header中泄露脚本和IP

问题描述

我正在使用 PHPMailer 发送电子邮件

在电子邮件的原始消息中,标题包含

X-PHP-Script: /path/to/my/script.PHP myip6address,myip4address

我在PHP.ini中编辑了这些设置

[mail function]
mail.add_x_header = 0
add_x_header = 0

在我的 PHP 脚本中,当我使用 ini_get("mail.add_x_header") 时,它返回 "0"

// to try and erase the info from the global server var
$_SERVER = Array();

$mail = new PHPMailer;
$mail->setFrom("me@mysite.com");
$mail->addAddress("foo@gmail.com");

// to try and override it,instead it just appends and keeps the original header
$mail->addCustomHeader("X-PHP-Script","No.");
$mail->Subject = "This is a test";
$mail->isHTML(true);
$mail->Body = "hello world";

if($mail->send() == false)
{
    var_dump("Failed to send mail",$mail->ErrorInfo);
}

它仍然会在我发送的每封电子邮件中发送我的脚本位置和 IP 地址。

如果我使用 mail() 而不是 PHPMailer,它也会发送它,但我假设 PHPMailer 在幕后使用 mail()

如何完全禁用该标题

解决方法

我不知道为什么你的 ini 设置没有抑制它。 PHPMailer 确实默认使用 mail(),但您应该尝试使用 SMTP 到 localhost,因为它比 mail() 更快、更安全,并且可以让您控制所有标头。您所要做的就是:

$mail->isSMTP();

而且默认设置应该没问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...