嘿家伙,最近我刚刚在Linux安装msmtp,我甚至发送一个邮件从terminal,它的工作:
echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" |msmtp --debug --from=default -t [email protected]
但在PHP中,编辑php.ini文件后有这样的:
sendmail_path = '/usr/bin/msmtp -t'
并使用这段代码:
<?php if ( mail ( '[email protected]', 'Test mail from localhost', 'Working Fine.' ) ){ echo 'Mail sent'; } else{ echo 'Error. Please check error log.'; } ?>
我收到了邮件发送的邮件,但没有收到我的收件箱中的邮件。 甚至不在垃圾邮件文件夹中。 有什么错我在做什么?
msmtpconfiguration文件:
defaults tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt account default host smtp.gmail.com port 587 auth on user [email protected] password password from [email protected] logfile /var/log/msmtp.log
我遇到了同样的问题。 你的脚本说一半的解决scheme..检查你的apache错误日志,而不是msmtp的,如果他们甚至存在.. :)我的日志文件说:
"msmtp: /etc/msmtprc: must be owned by you"
实际上这是正确的,/ etc / msmtp中的我的msmtpconfiguration文件不属于http。
我的php.ini文件是这样的:
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t"
希望这可以帮助。
返回值
如果邮件已成功接收,则返回TRUE,否则返回FALSE。
重要的是要注意,仅仅因为邮件被接受交付,并不意味着邮件实际上会到达预期的目的地。
所以,基本上这意味着邮件被转发到邮件传输工具,你的情况是/usr/bin/msmtp 。 你的代码可能没有问题。 我会说适当的地方看是/var/log/mail.err或其他邮件相关的日志。