2017-05-24 63 views
0

我想使用我的laravel项目中的Gmail发送邮件。在laravel项目中使用Gmail SMTP发送邮件时出错

我使用gmail帐户的所有必需的细节到项目环境文件,但我得到这个错误。

Error : Swift_TransportException in StreamBuffer.php line 268: 
Connection could not be established with host smtp.gmail.com [Connection refused #111] 

当我发送从我的本地邮件我的意思是使用驱动程序“sendmail的”邮件都工作正常,但我是需求量的我想从SMTP发送邮件。

下面是代码,你可以看到我使用的是什么。

Mail.php

return [ 
    /* 
    |-------------------------------------------------------------------------- 
    | Mail Driver 
    |-------------------------------------------------------------------------- 
    | 
    | Laravel supports both SMTP and PHP's "mail" function as drivers for the 
    | sending of e-mail. You may specify which one you're using throughout 
    | your application here. By default, Laravel is setup for SMTP mail. 
    | 
    | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", 
    |   "ses", "sparkpost", "log" 
    | 
    */ 
    'driver' => env('MAIL_DRIVER', 'smtp'), 
    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Host Address 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may provide the host address of the SMTP server used by your 
    | applications. A default option is provided that is compatible with 
    | the Mailgun mail service which will provide reliable deliveries. 
    | 
    */ 
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 
    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Host Port 
    |-------------------------------------------------------------------------- 
    | 
    | This is the SMTP port used by your application to deliver e-mails to 
    | users of the application. Like the host we have set this value to 
    | stay compatible with the Mailgun e-mail application by default. 
    | 
    */ 
    'port' => env('MAIL_PORT', 587), 
    /* 
    |-------------------------------------------------------------------------- 
    | Global "From" Address 
    |-------------------------------------------------------------------------- 
    | 
    | You may wish for all e-mails sent by your application to be sent from 
    | the same address. Here, you may specify a name and address that is 
    | used globally for all e-mails that are sent by your application. 
    | 
    */ 
    'from' => [ 'address' => null , 'name' => null ], 
    /* 
    |-------------------------------------------------------------------------- 
    | E-Mail Encryption Protocol 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may specify the encryption protocol that should be used when 
    | the application send e-mail messages. A sensible default using the 
    | transport layer security protocol should provide great security. 
    | 
    */ 
    'encryption' => env('MAIL_ENCRYPTION', 'tls'), 
    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Server Username 
    |-------------------------------------------------------------------------- 
    | 
    | If your SMTP server requires a username for authentication, you should 
    | set it here. This will get used to authenticate with your server on 
    | connection. You may also set the "password" value below this one. 
    | 
    */ 
    'username' => env('MAIL_USERNAME'), 
    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Server Password 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may set the password required by your SMTP server to send out 
    | messages from your application. This will be given to the server on 
    | connection so that the application will be able to send messages. 
    | 
    */ 
    'password' => env('MAIL_PASSWORD'), 
    /* 
    |-------------------------------------------------------------------------- 
    | Sendmail System Path 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "sendmail" driver to send e-mails, we will need to know 
    | the path to where Sendmail lives on this server. A default path has 
    | been provided here, which will work well on most of your systems. 
    | 
    */ 
    'sendmail' => '/usr/sbin/sendmail -bs', 

    /* 
    |-------------------------------------------------------------------------- 
    | Mail "Pretend" 
    |-------------------------------------------------------------------------- 
    | 
    | When this option is enabled, e-mail will not actually be sent over the 
    | web and will instead be written to your application's logs files so 
    | you may inspect the message. This is great for local development. 
    | 
    */ 

    'pretend' => false, 
]; 

.ENV文件CONFIGRATION

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
MAIL_USERNAME=mygmail 
MAIL_PASSWORD=mygmailpassword 
MAIL_ENCRYPTION=tls 

请让我知道我做错了。

从Google帐户设置正确配置。

1)DisplayUnlockCaptcha =>已启用

2)连接的应用程序=>已启用

3)IMAP访问=>已启用

所有设置安全都能够从帐户发送邮件。

+0

你可以尝试在托管应用程序的服务器上执行“telnet smtp.gmail.com 587”吗?如果它不能连接,那么你可能在一个网络中,可以阻止端口587。 –

+0

我该如何检查这个“telnet smtp.gmail.com 587”。这是错误,而我正在改变为telnet驱动程序。 错误:不支持驱动程序[telnet]。 –

+0

您可以在命令行中执行此操作。或者使用任何可以检查是否可以连接到主机名:端口的实用程序。这只是为了验证这不是网络问题。 –

回答

0

在我自己的laravel安装我已经有一个工作smtp mail函数,所以让我剥去所需的代码,以正确设置它,随意复制和粘贴代码。请记住更改帐户变量。

mail.php

<?php 
 

 
return [ 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | Mail Driver 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | Laravel supports both SMTP and PHP's "mail" function as drivers for the 
 
    | sending of e-mail. You may specify which one you're using throughout 
 
    | your application here. By default, Laravel is setup for SMTP mail. 
 
    | 
 
    | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", 
 
    |   "ses", "sparkpost", "log" 
 
    | 
 
    */ 
 

 
    'driver' => env('MAIL_DRIVER', 'smtp'), 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | SMTP Host Address 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | Here you may provide the host address of the SMTP server used by your 
 
    | applications. A default option is provided that is compatible with 
 
    | the Mailgun mail service which will provide reliable deliveries. 
 
    | 
 
    */ 
 

 
    'host' => env('MAIL_HOST', 'smtp.gmail.com'), 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | SMTP Host Port 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | This is the SMTP port used by your application to deliver e-mails to 
 
    | users of the application. Like the host we have set this value to 
 
    | stay compatible with the Mailgun e-mail application by default. 
 
    | 
 
    */ 
 

 
    'port' => env('MAIL_PORT', 587), 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | Global "From" Address 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | You may wish for all e-mails sent by your application to be sent from 
 
    | the same address. Here, you may specify a name and address that is 
 
    | used globally for all e-mails that are sent by your application. 
 
    | 
 
    */ 
 

 
    'from' => [ 
 
     'address' => env('MAIL_FROM_ADDRESS', '[email protected]'), 
 
     'name' => env('MAIL_FROM_NAME', 'Create your own header name'), 
 
    ], 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | E-Mail Encryption Protocol 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | Here you may specify the encryption protocol that should be used when 
 
    | the application send e-mail messages. A sensible default using the 
 
    | transport layer security protocol should provide great security. 
 
    | 
 
    */ 
 

 
    'encryption' => env('MAIL_ENCRYPTION', 'tls'), 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | SMTP Server Username 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | If your SMTP server requires a username for authentication, you should 
 
    | set it here. This will get used to authenticate with your server on 
 
    | connection. You may also set the "password" value below this one. 
 
    | 
 
    */ 
 

 
    'username' => env('MAIL_USERNAME', '[email protected]'), 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | SMTP Server Password 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | Here you may set the password required by your SMTP server to send out 
 
    | messages from your application. This will be given to the server on 
 
    | connection so that the application will be able to send messages. 
 
    | 
 
    */ 
 

 
    'password' => env('MAIL_PASSWORD', 'example123'), 
 

 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | Sendmail System Path 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | When using the "sendmail" driver to send e-mails, we will need to know 
 
    | the path to where Sendmail lives on this server. A default path has 
 
    | been provided here, which will work well on most of your systems. 
 
    | 
 
    */ 
 

 
    'sendmail' => '/usr/sbin/sendmail -bs', 
 

 
    'pretend' => false 
 
];

.ENV文件

MAIL_DRIVER=smtp 
 
MAIL_HOST=smtp.gmail.com 
 
MAIL_PORT=587 
 
[email protected] 
 
MAIL_PASSWORD=example123 
 
MAIL_ENCRYPTION=tls

将数据发送到电子邮件地址您的choise

Mail::send('emails.contact/* View that creates the email layout */', $contact, 
 
      function ($form) use ($contact) 
 
      { 
 
       //email 'From' field: Get users email address and name 
 
       $form->from($contact['email'], $contact['name']); 
 
       //email 'To' field: Email to > address. 
 
       $form->to('[email protected]', 'example info')->subject('example'); 
 
      });

希望这有助于功能的例子!

+0

我使用相同的代码,你可以检查上面的代码,类似于你的代码。如果我的代码中有任何问题,请让我知道它在哪里,以便我可以修复它。 –

+0

我看到你正在使用'smtp.mailgun.org'作为主机? @DurgaParshad – Deathstorm

+0

你可以看到那里的env声明取代了smtp.gmail.com。而且我也尝试根据你的改变,但同样的错误发生。 –