0

开始时根本不发送电子邮件,但后来我在函数中使用了“-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,否则根本不会发送电子邮件。

谢谢。

4

2 回答 2

0

additional_parameters参数(-f 或 -r)可用于将附加标志作为命令行选项传递给配置为在发送邮件时使用的程序,如 sendmail_path 配置设置所定义。例如,这可用于在使用带有 -f sendmail 选项的 sendmail 时设置信封发件人地址。

additional_parameters( > 4.2.2) 被禁用,safe_mode并且 mail() 函数将显示警告消息并在使用时返回 FALSE。

运行 Web 服务器的用户应作为受信任用户添加到 sendmail 配置中,以防止在使用此方法设置信封发件人 (-f) 时将“X-Warning”标头添加到邮件中。对于 sendmail 用户,此文件是/etc/mail/trusted-users.

(或者,如果仍然有问题,请删除 sendmail 并安装 postfix(更容易)。)

于 2013-11-05T17:02:29.247 回答
0

代码似乎没问题。这可能是设置不正确(例如 PHP.ini 没有 SMTP 服务器或防火墙阻止某些东西)。另外,请确保有换行符"\n"$Body已经看到一些邮件服务器因此拒绝邮件。直接使用邮件总是很棘手。尝试改用SwiftmailerPHPMailer之类的库。这样您就不必担心如何发送 HTML、附件...

于 2013-11-05T16:52:20.177 回答