请不要将此标记为重复问题。我已经尝试了建议的步骤(检查错误日志,检查语法,标题信息等等)来解决mod指向我的问题,并且所有这些步骤都不起作用。我收到了一个允许的问题,我似乎无法弄清楚原因。我得到的错误是:
“11月13日14:19:08 centos64 sendmail [6611]:uADJJ80J006611:SYSERR(nginx):队列:无法创建队列文件./qfuADJJ80J006611,euid = 498,fd = -1,fp = 0x0:权限被拒绝〜 “
原始消息:
想要在nginx centOS 6.4服务器上使用PHP发送电子邮件的帮助。我是新手,所以想先验证我当前的设置是否正确,并在开始调整配置文件之前诊断出确切的问题。
目标:我希望能够在我的SQL数据库电子邮件警报等中发送所有用户。所以最终如果我有一个庞大的用户群,我可能会发送大量的电子邮件..
在我的php.ini文件中,我看到..
sendmail_path = /usr/sbin/sendmail -t -i
我使用了命令
/etc/init.d/postfix status
验证postfix是否已安装且是最新的(yum -y install postfix,或其他任何内容)
我正在查看这个有用的帖子(http://www.webhostingtalk.com/showthread.php?t=1238442),并希望遵循本指南(http://www.server-world.info/en/note?os=CentOS_6&p=mail),但是再一次,在我得到指导之前,我不想开始弄乱这些东西。
我尝试使用以下代码发送邮件,只是访问了我服务器上的email.php页面,但没有收到测试邮件。尝试从gmail电子邮件地址发送测试电子邮件。
<?php $to = 'GMAIL_EMAIL@gmail.com';
$subject = 'Testing';
$message = 'Hello';
$headers = 'From: GMAIL_EMAIL@gmail.com' . "\r\n" .
'Reply-To: GMAIL_EMAIL@gmail.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
像往常一样,任何和所有的帮助表示赞赏。谢谢!
解决方案:
sudo setsebool -P httpd_can_sendmail 1
sudo setsebool -P httpd_can_network_connect 1
然后消息被放在clientmqueue文件夹中没有被发送,所以我查看了/ var / log / maillog并看到一条消息说... 'centos64 postfix / smtp [22..7]:连接到gmail-smtp-in.l.google.com [....]:25:网络无法访问'所以我用Google搜索了错误消息并阅读了我需要的内容安装cyrus plain ..
yum install cyrus-sasl-plain
希望这可以帮助其他人在同一条船上。
答案 0 :(得分:0)
我提供了一些简单的选项,可能涵盖所有可能的情况。
您关注的是
阅读旧答案,了解您的关注方式 - PHP mail function not working on Centos server
自我托管PHP库
这是PHPMailer的Github repo,带有示例 - https://github.com/PHPMailer/PHPMailer自托管电子邮件http://swiftmailer.org的第二个选项是众所周知的。按照他们的基本指南使用此代码段:
<?php
require_once 'swift/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
->setUsername('GMAIL_USERNAME')
->setPassword('GMAIL_PASSWORD');
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Example Subject')
->setFrom(array('some@some-mail.com' => 'Example'))
->setTo(array('abc@another-mail.com'))
->setBody('This is an Example Mail.');
$result = $mailer->send($message);
?>
自托管的其他方式是使用Pear Mail。
交易电子邮件服务
您可以使用带有https://sendgrid.com/pricing/的SendGrid等服务代替自托管邮件服务器,通过HTTP发送电子邮件(我们可以关闭邮件端口以提高安全性)。有很多这样的服务。它们与swiftmailer.org
完全相同,您需要PHP库和PHP代码段,但它们托管的是电子邮件,而不是您的服务器 - https://github.com/sendgrid/sendgrid-php