我对XAMPP和WAMP有同样的问题。我不确定导致此问题的原因,因为日志文件中绝对没有任何内容。
我三重检查了我的配置,一切都是应该是我甚至关闭了我的防火墙,但没有任何反应。
Laravel 4抛出此(超时)异常:Symfony\Component\Debug\Exception\FatalErrorException
\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php165
public function readLine($sequence)
{
if (isset($this->_out) && !feof($this->_out)) {
$line = fgets($this->_out);
if (strlen($line)==0) {
Laravel 4使用此功能读取模板文件。但是,正确命名和在适当的文件夹中访问文件没有问题。发送邮件的方法是这样的:
Mail::send('emails.activate', array('url' => $url), function($message) {
$message->to(trim(Input::get('email')))->subject('Account activation.');
});
来自配置文件夹的Laravel&mail.php:
<?php
return array(
'driver' => 'smtp', // Changed this to mail() and sendmail same error
'host' => 'smtp.gmail.com',
'port' => 465,
'from' => array('address' => 'admin@localhost.com', 'name' => 'Support Team'),
'encryption' => 'tls',
'username' => '****@gmail.com',
'password' => '*****',
'sendmail' => 'C:\xampp\sendmail\sendmail.exe -t',
);
在我的php.ini文件中,我有:
[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = smtp.gmail.com
smtp_port = 465
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = ****@gmail.com
; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
在我的sendmail.ini中,我有:
smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
error_logfile=error.log
auth_username=****@gmail.com
auth_password=****
pop3_server=
pop3_username=
pop3_password=
force_sender=
force_recipient=
hostname=
我已将所有设置正确,我关闭了防火墙,检查我的路由器无论如何都无法追踪它。
答案 0 :(得分:3)
我发布了一个答案here,可能会解决这个问题。
简而言之,当使用端口465时,需要将默认加密设置从tls更改为ssl。
'host' => 'smtp.gmail.com',
'port' => 465,
'encryption' => 'ssl',
答案 1 :(得分:0)
你可能现在已经知道了,但我认为问题在于你的
Mail::send('emails.activate', array('url' => $url), function($message) {
$message->to(trim(Input::get('email')))->subject('Account activation.');
});
尝试将其更改为:
$to = trim(Input::get('email'));
$subject = 'Account activation.'; //for illustration purposes
Mail::send('emails.activate', array('url' => $url), function($message) use ($to, $subject){
$message->to($to)->subject($subject);
});
答案 2 :(得分:0)
如果gmail阻止了您并且不允许您使用您的凭据登录,请尝试此操作。
使用您的Gmail帐户登录,然后转到: https://accounts.google.com/b/0/DisplayUnlockCaptcha
然后点击“继续”,您只需几分钟即可使用您的代码发送邮件。 在此之后谷歌将允许从新来源登录该帐户。
答案 3 :(得分:0)
我知道这是一个老话题,但对于那些感兴趣的人来说。当前从本地主机使用Gmail的要求有很大不同。您可以按以下方式配置Laravel .env文件
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=YOURID@GMAIL.COM
MAIL_PASSWORD=YOURPASSWORD
MAIL_ENCRYPTION=tls
可选:
MAIL_FROM_ADDRESS=YOURID@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
建议在laravel上配置PHP之前发送电子邮件。我使用伪造的sendemail,它可以正常工作。您所需要做的就是配置sendemail.ini file
。
您可以查看有关如何执行此操作的信息 https://stackoverflow.com/a/18185233/14106184