php - /usr/libexec/postfix/smtp 在 macOS 上不使用 Laravel 发送邮件
问题描述
我有一个想要发送电子邮件的 Laravel 8 项目。我在 macOS 上开发它,我想测试它,但它不起作用,但不会给出任何错误。(我用 替换了敏感数据********
)
.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=********@gmail.com
MAIL_PASSWORD=********
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=********@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
注意:我验证了这些设置,还测试了其他有效的 SMTP 设置。所以这不是这个文件中的配置问题
邮件.php
/// ...
'default' => env('MAIL_MAILER', 'mail'),
/// ...
'mailers' => [
'smtp' => [
'transport' => 'mail',
'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,
],
/// ...
],
/// ...
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
resource_path('views/emails'),
],
],
/// ...
邮件控制器.php
namespace App\Http\Controllers\API;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller as Controller;
use Illuminate\Support\Facades\Mail;
class MailController extends Controller
{
public function testMail(Request $request)
{
$email = '********@live.com';
$data = [
'title' => 'Test mail'
];
Mail::send(['html' => 'emails.testMail'], $data,
function ($message) use ($email, $data) {
$message->to($email)
->subject($data['title']);
});
$response = [
'error' => 0,
'to' => $email,
'data' => $data,
];
return response()->json($response, 200);
}
}
注意:在resources/views/emails/testMail.blade.php有一个仅包含 HTML 的刀片模板,用于测试目的。我还添加了适当的 GET 路由。
当我在 Postman 中访问端点时,我得到
{
"error": 0,
"to": "********@live.com",
"data": {
"title": "Test mail"
}
}
Little Snitch 突然出现,询问我是否要允许/usr/libexec/postfix/smtp访问smtp.gmail.com
,所以我知道电话通过了。我授予该进程访问任何服务器的所有权限并重试,但邮件永远不会到达我的目的地。
是的,我检查了垃圾邮件文件夹。是的,我检查了其他凭据。是的,我测试了两个帐户之间的手动交付。是的,我在完全禁用 Little Snitch 的情况下进行了测试。是的,我检查了 laravel.log 并没有显示任何内容。
我注意到,当我在.env文件中输入错误信息时,我不会从 Laravel 收到任何错误(更改时除外MAIL_MAILER
)。
如何从 SMTP 进程中获取输出以找出问题所在?我该如何解决这个问题?
解决方案
推荐阅读
- python - 同时运行多个 jpynb 文件
- javascript - 如何使用图像触发覆盖
- c# - 如何加载包含来自 HTTP 内容的数据的列表?
- c++ - 从属模板名称和 C++20 ADL
- amazon-web-services - 如何通过 ID 检查 API Gateway 部署内容
- dependency-injection - JSR 352 - Java 批处理 - 无法在侦听器工件中注入服务 bean 或 DAO
- android - AndroidStudio 和 Kotlin 无法访问“android.app.Activity”
- javascript - 如何使用护照本地猫鼬将多个对象保存到数据库?
- c# - Visual Studio 中的某些项目拒绝构建,即使我尝试手动构建它们
- javascript - 根据其他对象数组过滤对象数组