在Mac OS X上使用PHP mail()发送电子邮件时出错

时间:2011-06-29 20:16:31

标签: php macos email sendmail

我曾经能够使用PHP中的简单邮件()发送电子邮件,但由于我已升级到最新的PHP,因此无法发送电子邮件。

当我查看电子邮件日志时,我得到以下信息:

Jun 29 21:14:49 Johns-MacBook postfix/pickup[26503]: 384B6246803: uid=70 from=<_www>
Jun 29 21:14:49 Johns-MacBook postfix/master[26709]: fatal: open lock file pid/master.pid: unable to set exclusive lock: Resource temporarily unavailable
Jun 29 21:14:49 Johns-MacBook postfix/cleanup[26680]: 384B6246803: message-id=<20110629201449.384B6246803@example.com>
Jun 29 21:14:49 Johns-MacBook postfix/qmgr[26504]: 384B6246803: from=<_www@example.com>, size=351, nrcpt=1 (queue active)
Jun 29 21:14:49 Johns-MacBook postfix/local[26683]: 384B6246803: to=<ben@example.com>, relay=local, delay=0.02, delays=0.01/0/0/0, dsn=5.1.1, status=bounced (unknown user: "ben")
Jun 29 21:14:49 Johns-MacBook postfix/cleanup[26680]: 3C318246805: message-id=<20110629201449.3C318246805@example.com>
Jun 29 21:14:49 Johns-MacBook postfix/qmgr[26504]: 3C318246805: from=<>, size=2033, nrcpt=1 (queue active)
Jun 29 21:14:49 Johns-MacBook postfix/bounce[26684]: 384B6246803: sender non-delivery notification: 3C318246805
Jun 29 21:14:49 Johns-MacBook postfix/qmgr[26504]: 384B6246803: removed
Jun 29 21:14:49 Johns-MacBook postfix/local[26683]: 3C318246805: to=<_www@example.com>, relay=local, delay=0, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jun 29 21:14:49 Johns-MacBook postfix/qmgr[26504]: 3C318246805: removed

2 个答案:

答案 0 :(得分:2)

解决fatal: open lock file pid/master.pid: unable to set exclusive lock: Resource temporarily unavailable问题:

查看您的php.ini文件并确保您可以看到此行:

sendmail_path = sendmail -t -i

sendmail_path = /usr/sbin/sendmail -t -i

它周围不应该有任何引号,并且它之前没有分号(;)。如果它不存在或不同,请将其更改为与上面的一行匹配。

如果这没有帮助,请查看http://switch.richard5.net/2006/08/19/fatal-open-lock-file-pidmasterpid/并查看是否有帮助。既然你已经更新了PHP,我怀疑postfix是问题,但你永远不知道。

同时

您可能有postfix配置问题。它试图使用local中继进行传递。如果您尝试发送的电子邮件不是本地服务器上的电子邮件,您可能需要检查/etc/mailnames/etc/postfix/main.cf检查myhostnamemydomainmyorigin

答案 1 :(得分:0)

设置你的中继主机

sudo postconf -e relayhost=<your-isp’s-smtp-server>