在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是啥?

Posted

技术标签:

【中文标题】在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是啥?【英文标题】:What's the correct configuration to send emails using Sendmail in Laravel?在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是什么? 【发布时间】:2020-09-25 14:13:37 【问题描述】:

我正在使用 Laravel 7,我想通过 Laravel Mail 门面使用 Sendemail 驱动程序发送电子邮件。当我使用 php 邮件功能时它可以工作,但我想使用 Laravel Mail 门面。

我的 .env 文件电子邮件配置:

MAIL_DRIVER=sendmail
MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'

我在 config/mail.php 中的默认邮件设置:

'default' => env('MAIL_MAILER', 'sendmail'),
'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'),
    ],
    'ses' => [
        'transport' => 'ses',
    ],
    'sendmail' => [
        'transport' => 'sendmail',
        'path' => '/usr/sbin/sendmail -bs',
    ],
    'log' => [
        'transport' => 'log',
        'channel' => env('MAIL_LOG_CHANNEL'),
    ],
    'array' => [
        'transport' => 'array',
    ],
],

我已经按照文档中的说明创建了 Mail 类。什么是使它工作的正确配置?

【问题讨论】:

也许你应该从config/mail.phpsendmail部分发帖。因为这就是你要找的司机。 我已经从 config/mail.php 添加了邮件部分 在 laravel 7 中,环境变量更改为 MAIL_MAILER。您应该使用该键指定驱动程序 【参考方案1】:

首先,将默认MAIL_MAILER 更改为使用Sendmail。

MAIL_MAILER=sendmail

然后在 config/mail.php 中,更新 Sendmail 行。

'sendmail' => [
    'transport' => 'sendmail',
    'path' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs')
],

最后,如果您需要更改 MAIL_SENDMAIL 值,请将此行添加到您的 .env 中。

MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'

【讨论】:

以上是关于在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

laravel框架总结(十五) -- 发送邮件

Laravel5.5 邮件驱动使用 SMTP 驱动实现邮件发送

如何使用 perl 和 sendmail 从 URL 发送 pdf [Mail::Sendmail]

使用SwiftMessage从回复电子邮件中获取Laravel中的自定义标头

Laravel 邮件参数(sendmail/smtp)

我可以使用sendmail从Jenkins发送电子邮件,还是需要安装某种SMTP网关?