无法通过php和ssmtp发送邮件

时间:2013-08-16 10:17:23

标签: php ssmtp

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

<?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 = 'brads@telecomm.com';
        $subject = 'the subject';
        $message = 'hello';
        $headers = 'From: admin@telecomm.com' . "\r\n" .
            'Reply-To: admin@telecomm.com' . "\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>

3 个答案:

答案 0 :(得分:0)

我个人会选择像SwiftMailer这样的东西 - 它会定期更新并且相对简单 http://swiftmailer.org/

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我遇到了同样的问题,在运行端口测试PHP脚本后发现我需要配置linux(在我的情况下为Centos)以允许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。

例如 $ telnet mail.optusnet.com.au 25

在您的情况下,我怀疑没有,因为您可以从命令行发送电子邮件。

我希望有帮助