laravel - 使用 Lumen 发送邮件
问题描述
邮件.php
return [
'driver' =>'smtp',
'host' => 'smtp.gmail.com',
//'port' => 587,
'port' =>465,
//'encryption' =>'tls',
'encryption' =>'ssl',
'username' => 'xxxxxxxx@gmail.com',
'password' => 'xxxxxxx',
// 'sendmail' => '/usr/sbin/sendmail -bs',
'sendmail' => '/usr/sbin/sendmail -t',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
控制器
$data = []; // Empty array
Mail::send('email.credentials', $data, function($message)
{
$message->to('xxxxxx@gmail.com', 'Jon Doe')->subject('Welcome!');
});
错误
Swift_TransportException Connection could not be established with host smtp.gmail.com [连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。
我试过了...
更改 ssl / tls
更改端口
添加
"guzzlehttp/guzzle": "~5.3|~6.0"
composer.json在 StreamBuffer.php 中添加新行
$options = array_merge($options, array('ssl' => array('verify_peer' => false,'verify_peer_name' => false,'allow_self_signed' => true )));
请帮忙 。
谢谢你。
解决方案
1.需要照明/邮寄
确保您使用与底层框架相同的版本(即,如果您使用的是 Lumen v. 5.3,请使用composer require illuminate/mail "5.3.*"
)。
composer require illuminate/mail "5.5.*"
2.设置流明bootstrap/app.php
首先,打开您的bootstrap.php
并取消注释以下行:
$app->withFacades();
$app->register(App\Providers\AppServiceProvider::class);
此外,在您取消注释的最后一行下方添加以下行:
$app->configure('services');
这将允许您定义一个“服务”配置文件并设置您的邮件服务。现在我知道通常配置是使用 Lumen 在 .env 文件中完成的,我们很快就会使用它,但首先我们需要编写一个小的配置文件来映射到该.env
文件。
3. 创建你的配置文件
在安装的根级别创建一个名为 config 的新文件夹(如果它不存在)。在 config 文件夹中,创建两个新文件,一个名为 services.php,另一个名为**mail.php**.
在services.php
文件中粘贴以下内容:
<?php
return [
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
];
最后,将以下内容添加到您的 .env 文件中:
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=<your-mailgun-domain>
MAILGUN_SECRET=<your-mailgun-api-key>
确保用您的实际密钥和域替换那些鬼鬼祟祟的占位符。如果您不使用 Mailgun,您可以随时使用 Mail 附带的其他邮件提供商;如果您打算使用其他提供商,请查看文档,一旦您在这一点上,它们都很容易设置。
4. 发送电子邮件!
要发送电子邮件,请在您的课程中使用以下其中一项(取决于您的偏好):
use Illuminate\Support\Facades\Mail;
$data = []; // Empty array
Mail::send('email.credentials', $data, function($message)
{
$message->to('xxxxxx@gmail.com', 'Jon Doe')->subject('Welcome!');
});
最后,不要忘记阅读Laravel Mail 文档以获取有关如何使用这个出色库的更多信息。
推荐阅读
- html - 调用python函数的表单按钮
- amazon-web-services - 为什么 AWS 应用程序负载均衡器需要两个子网?
- php - 如何在 dynamodb putitem 的数组属性中嵌套数组
- c# - 在 sql 中运行但不在 .Net 中运行的查询
- android - 在 mvc 中使用改造(@Path)?
- javascript - 基于类名的 CSS 控件旋转
- python - 使用带有 pandas/python 的字典绘制二维数组
- java - 为什么 BluetoothLEScanner 不调用它的 ScanCallback
- prolog - 从包含列表的变量中获取值
- javascript - 谷歌地图 fitBounds 缩放不变