[英]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.