我的代码中没有错误,我可以找到我的本地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>
答案 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
在您的情况下,我怀疑没有,因为您可以从命令行发送电子邮件。
我希望有帮助