开始时根本没有发送电子邮件,但后来我在函数中使用了“-f”参数,然后该函数发送到外部地址(到目前为止测试的Gmail和Hotmail)但它不会但是可以为域上的地址工作。只是想知道它是在代码中还是服务器设置有问题?
if ($Valid == 1) {
$_POST = array_map('strip_tags', $_POST);
$_POST = array_map('stripslashes', $_POST);
$To = "user@domain.ca";
$Subject = "Online Driver Application";
$Body = "All the values of the form that was filled out (removed because there was a lot and it doesn't affect the problem)";
$Headers = 'MIME-Version: 1.0' . "\r\n";
$Headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Headers .= 'From: Company <info@domain.ca>' . "\r\n";
$Headers .= 'Reply-To: no-reply@domain.ca' . "\r\n";
$Headers .= 'X-Mailer: PHP/' . phpversion();
mail($To, $Subject, $Body, $Headers, -finfo@domain.ca);
echo '<div class="success">Thank You! Your form has been successfully submitted.</div>';
} else {
if ($ErrorMsg != '') {
echo '<div class="error">'.$ErrorMsg.'</div>';
}
同样,除非我在邮件功能中使用-finfo@domain.ca,否则电子邮件根本不会被发送出去。
感谢。
答案 0 :(得分:0)
代码似乎没问题。这可能是设置不正确(如PHP.ini没有SMTP服务器或防火墙阻止的东西)。另外,请确保"\n"
中的换行符为$Body
我已经看到一些邮件服务器因此而拒绝邮件。直接使用邮件总是很棘手。尝试使用Swiftmailer或PHPMailer之类的库。这样您就不必担心如何发送HTML,附件......
答案 1 :(得分:0)
additional_parameters
参数(-f或-r)可用于将其他标志作为命令行选项传递给配置为在发送邮件时使用的程序,如sendmail_path配置设置所定义。例如,当使用带有-f sendmail选项的sendmail时,可以使用此选项设置信封发件人地址。
在> 4.2.2
中禁用additional_parameters(safe_mode
),mail()函数将显示警告消息,并在使用时返回FALSE。
网络服务器运行的用户应该作为受信任的用户添加到sendmail配置中,以防止出现“X警告”。使用此方法设置信封发件人(-f)时,标题将添加到邮件中。对于sendmail用户,此文件为/etc/mail/trusted-users
。
(或者,如果仍有问题,请删除sendmail并安装postfix(更容易)。)