我希望在laravel 4.1中为每封已发送的电子邮件记录SMTP事务。
例如,当我使用以下代码发送电子邮件时:
Mail::send('emails.any_view', $data, function($message) use ($user) {
$message->from('server@example.com', 'PHP Code');
}
我希望看到类似的内容:
[Resolving gmail-smtp-in.l.google.com...]
[Contacting gmail-smtp-in.l.google.com [173.194.64.27]...]
[Connected]
220 mx.google.com ESMTP zd4si6046704obb.40 - gsmtp
EHLO Network-Tools.com
250-mx.google.com at your service, [67.222.132.193]
VRFY test
252 2.1.5 Send some mail, I'll try my best zd4si6046704obb.40 - gsmtp
RSET
250 2.1.5 Flushed zd4si6046704obb.40 - gsmtp
EXPN test
502 5.5.1 Unimplemented command. zd4si6046704obb.40 - gsmtp
RSET
250 2.1.5 Flushed zd4si6046704obb.40 - gsmtp
MAIL FROM:<admin@Network-Tools.com>
250 2.1.0 OK zd4si6046704obb.40 - gsmtp
RCPT TO:<test@gmail.com>
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 zd4si6046704obb.40 - gsmtp
[Address has been rejected]
RSET
250 2.1.5 Flushed zd4si6046704obb.40 - gsmtp
QUIT
221 2.0.0 closing connection zd4si6046704obb.40 - gsmtp
[Connection closed]
我真的不在乎这是在日志文件还是变量中我可以在需要时转储。有谁知道我如何访问这些信息?
我想我越来越接近我的回答了。如果我将app / config / mail.php中的encription替换为无效的内容,我会收到如下错误消息:
Swift_TransportException 预期的响应代码220,但代码为“500”,消息“500 5.5.1未知或未实现的命令”
我需要一种方法来访问响应代码,即使他们没有创建错误。
答案 0 :(得分:1)
Laravel Mail本身并未提供这些详细信息。
只有日志功能,它会将所有电子邮件写入您的日志文件,而不会将它们发送给收件人。这主要用于调试和电子邮件内容验证。
Mail :: send()使用配置的邮件守护程序,即您的服务器或远程服务器。
如果您使用Gmail等远程服务器作为SMTP服务器,则无法访问这些日志详细信息。
如果是您自己的服务器,请转到配置的日志目录并捕获相关的日志文件。
确定文件后,使用PHP阅读文件或tail -f /var/log/maillog
。
echo file_get_contents('/var/log/maillog');
:)
答案 1 :(得分:0)
我收到了同样的错误..当我在mail.php中更改了EMAIL_ENCRYPTION时工作正常。这是'加密'=&gt; env('MAIL_ENCRYPTION','tps'),在我将其更改为'encryption'=&gt;之前env('MAIL_ENCRYPTION',''),