【问题标题】:I am having error while trying to send mail in laravel尝试在 laravel 中发送邮件时出错
【发布时间】:2021-04-16 08:35:19
【问题描述】:

我之前一直在使用下面的 laravel 邮件设置正常发送邮件,并且效果很好。但是现在当我运行应用程序并尝试发送邮件时,它会显示此错误 “无法与主机 smtp.gmail.com 建立连接:stream_socket_client():无法连接到 tcp://smtp.gmail.com:587(无法建立连接,因为目标机器主动拒绝。”

我已经研究并尝试了不同的方法来设置我的 laravel 邮件,但我仍然收到错误,并且我的 gmail 的不太安全的应用程序访问权限已打开。

我的 .env

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=delivery@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=delivery@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

邮件.php

'default' => env('MAIL_MAILER', 'smtp'),

/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
  

'mailers' => [
    'smtp' => [
        'transport' => 'smtp',
        'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
        'port' => env('MAIL_PORT', 587),
        'encryption' => env('MAIL_ENCRYPTION', 'tls'),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
        'timeout' => null,
        'auth_mode' => null,
    ],

    'ses' => [
        'transport' => 'ses',
    ],

    'mailgun' => [
        'transport' => 'mailgun',
    ],

    'postmark' => [
        'transport' => 'postmark',
    ],

    'sendmail' => [
        'transport' => 'sendmail',
        'path' => '/usr/sbin/sendmail -bs',
    ],

    'log' => [
        'transport' => 'log',
        'channel' => env('MAIL_LOG_CHANNEL'),
    ],

    'array' => [
        'transport' => 'array',
    ],
],

【问题讨论】:

标签: laravel


【解决方案1】:
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", "sendmail", "mailgun", "mandrill", "ses",
  |            "sparkpost", "log", "array"
  |
 */
'driver' => env('MAIL_DRIVER', 'mail'),
/*
  |--------------------------------------------------------------------------
  | 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' => env('MAIL_FROM_ADDRESS', 'service@codegurru.com'),
    'name' => env('MAIL_FROM_NAME', 'Job Portal'),
],
/*
  |--------------------------------------------------------------------------
  | 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'),
'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',
/*
  |--------------------------------------------------------------------------
  | Markdown Mail Settings
  |--------------------------------------------------------------------------
  |
  | If you are using Markdown based email rendering, you may configure your
  | theme and component paths here, allowing you to customize the design
  | of the emails. Or, you may simply stick with the Laravel defaults!
  |
 */
'markdown' => [
    'theme' => 'default',
    'paths' => [
        resource_path('views/vendor/mail'),
    ],
],

];

  • 在 .env 文件中 MAIL_DRIVER=smtp MAIL_HOST=mail.domain.com
    MAIL_PORT=465 MAIL_USERNAME=xyz@xyz.com MAIL_PASSWORD=********* MAIL_ENCRYPTION=tls

【讨论】:

  • 感谢您的帮助,按照您的建议进行操作后,我收到一个错误,显示 --Expected response code 220 but got an empty response"
【解决方案2】:

您能检查一下您用作 SMTP 的 Gmail 帐户的收件箱吗?看起来它的访问权限可能会受到 Gmail 的限制。您可能已收到与访问您帐户的某些应用程序相关的邮件。您需要授权并允许权限。

【讨论】:

  • 我检查了我的 Gmail 收件箱,但没有收到任何与某些应用访问帐户相关的邮件
猜你喜欢
  • 2018-05-16
  • 2019-07-05
  • 2018-04-27
  • 2017-10-30
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
相关资源
最近更新 更多