2013-08-16 35 views
0

从我能找到的和我本地ssmpt客户端已配置的代码中没有错误,并且我可以通过命令行发送邮件。但是没有邮件,也没有错误来自php。就好像php从来没有打过这个本地邮件。我'确实'将我的sendmail路径设置在我的php.ini中并重新启动了apache。我不知道还有什么可能吗?无法通过php和ssmtp发送邮件

<?php 
require_once('config.php'); 
$attrs = array(PDO::ATTR_PERSISTENT => true); 
$pdo = new PDO("mysql:host=localhost;dbname=".$dbname, $db_username, $db_password, $attrs); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$custlist = $pdo->prepare("SELECT customer_list.sms_num, carriers.carrieraddr, customer_list.contact_first, customer_list.contact_last 
    FROM carriers, customer_list 
    WHERE send_id=send_code 
    ORDER BY customer_list.sms_num"); 
#$carrierlist = $pdo->prepare("SELECT * FROM carriers"); 
if (isset($_POST['body'], $custlist)) { 
    $custlist->execute(); 
    #var_dump($custlist); 
    #var_dump($_POST['body']); 
    while ($row = $custlist->fetch(PDO::FETCH_ASSOC)) { 
     #$prefix = $row['sms_num']; 
     #$suffix = $row['carrieraddr']; 
     $to = '[email protected]'; 
     $subject = 'the subject'; 
     $message = 'hello'; 
     $headers = 'From: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 

     mail($to, $subject, $message, $headers); 
     #$body = $_POST['body']; 

     #var_dump($prefix); 
     #var_dump($suffix); 
     #var_dump($_POST['body']); 
    } 
} 

//$products = array(); 
$smscustobject = new ArrayObject($custlist); 
#$smsarrayobject = new ArrayObject($carrierlist); 

$pdo = null; 
?> 
<form action="" method="POST"> 
    Your Message Body <input name="body" type="text" /> 
    <input type="submit"> 
</form> 
+0

你发邮件到达垃圾邮箱,你检查了吗? –

+0

@Wiggler Jtag nope,没有垃圾邮件。但多一点挖掘显示,该PHP似乎试图使用mod_mail为Apache而不是ssmtp。这将永远不会工作,我所有的smtp设置都在ssmtp而不是apache。 apache2:mail()在[/home/downlowd/www/dev/campaignLaunch.php:25]上:[email protected] - Headers:From:[email protected] – brad

+0

啊,那么不能帮助你,这个是服务器配置,我使用nginx而不是apache。希望问题是在PHP端...所以现在肯定你可以找到谷歌的答案,我确定有ssmtp x apache配置。 –

回答

0

我有同样的问题和运行,我需要(在我的情况的Centos)配置Linux端口的测试PHP脚本允许的httpd使用命令行上输入以下命令来访问TCP端口后发现:

setsebool httpd_can_network_connect = 1

或永久

setsebool -P httpd_can_network_connect = 1

注:使用-P选项花了2分钟我的机器上,所以要耐心

变戏法似的!我的邮件命令工作。

我的情况是,我能够在命令行发送邮件到我的ISP的SMTP服务器即mail.optusnet.com.au端口25,但不使用PHP脚本在浏览器中运行。

此外,请确保您的防火墙不会通过向您的SMTP主机运行Telnet会话来干扰PHP。

例如$远程登录mail.optusnet.com.au 25

在你的情况,我怀疑不是你能从命令行发送电子邮件。

我希望可以帮到

0

删除sendmail的路径,并允许系统使用默认修复它。