簡體   English   中英

無法通過php和ssmtp發送郵件

[英]unable to send mail via php and 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>

我個人會選擇像SwiftMailer這樣的東西-它會定期更新,並且相對容易http://swiftmailer.org/

刪除sendmail路徑並允許系統使用默認值即可修復它。

我遇到了同樣的問題,並在運行端口測試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

在您的情況下,我懷疑沒有,因為您能夠從命令行發送電子郵件。

希望對您有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM