2013-11-05 67 views
0

开始时电子邮件根本没有被发送,但后来我在函数中使用了“-f”参数,然后发送到外部地址(到目前为止测试过的Gmail和Hotmail),但它不适用于域中的地址。只是想知道它是否在代码中,或者它是服务器设置的问题?PHP邮件发送到外部电子邮件地址但不是内部

if ($Valid == 1) { 
    $_POST = array_map('strip_tags', $_POST); 
    $_POST = array_map('stripslashes', $_POST); 

    $To = "[email protected]"; 

    $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 <[email protected]>' . "\r\n"; 
    $Headers .= 'Reply-To: [email protected]' . "\r\n"; 
    $Headers .= 'X-Mailer: PHP/' . phpversion(); 

    mail($To, $Subject, $Body, $Headers, [email protected]); 

    echo '<div class="success">Thank You! Your form has been successfully submitted.</div>'; 
} else { 
    if ($ErrorMsg != '') { 
     echo '<div class="error">'.$ErrorMsg.'</div>'; 
    } 

同样,除非邮件功能中有[email protected],否则电子邮件根本不会被发送出去。

谢谢。

+0

也许服务器设置问题,如果服务器有类似的Plesk或安装的cPanel,但MX记录指向其他地方(不同地址),服务器可能会看到电子邮件为“内部”并跳过连接,并将邮件传递给自己。 –

+0

他们使用Cpanel。任何想法,我需要去看mx记录? – ETx13

回答

0

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

+0

我一直想做到这一点,但他们只给我访问cpanel(我是新来的),我可以通过cpanel安装所说的库吗? – ETx13

+0

@ ETx13是的,我想你可以。我有一个使用cPanel的主机,并且有一个文件管理器可以让你上传文件,但是如果有很多文件需要处理,这将是一件痛苦的事情。你也应该有一个FTP访问... – AlexV

0

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

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

Web服务器运行的用户应该作为可信用户添加到sendmail配置中,以避免在使用此方法设置信封发件人(-f)时将“X警告”标头添加到邮件中。对于sendmail用户,这个文件是/etc/mail/trusted-users

(或删除sendmail和如果仍然问题安装后缀(很容易)。)

相关问题