繁体   English   中英

Laravel 多租户 - 无法使用 2 个可能的身份验证器在 SMTP 服务器上使用用户名“apiKey”进行身份验证

[英]Laravel Multitenancy - Failed to authenticate on SMTP server with username "apiKey" using 2 possible authenticators

我已经为此苦苦挣扎了几天,所提供的答案似乎都无济于事。

我正在使用 package stancl/tenancy 来管理我的多租户应用程序。 每个租户都可以拥有自己的 email 配置,这些配置存储在数据库表中。

我在 Sendgrid 帐户上设置了一个帐户,并正确设置了配置,如下所示:

MAIL_DRIVER = 'SMTP'
MAIL_HOST = 'smtp.sendgrid.net'
MAIL_PORT = 587
MAIL_USERNAME = 'apikey'
MAIL_PASSWORD = myApiKey
MAIL_FROM_ADDRESS="myemail@domain.com"

当我像这样发送测试 email 时,它似乎工作正常。

这就是发送测试 email 的方式。

Mail::raw("Sample message sent from the backend route (test-mail)", function ($message){
    $message->to("mytestemail@gmail.com")->subject("Sample Email");
});

但是,当我尝试在 controller 中动态进行更改时,我会收到以下错误: 发送邮件错误 下面是我如何动态设置配置:

Route::get("test-mail", function (){
Config::set("mail", [
    "driver"    =>  "smtp",
    "host"      =>  "smtp.sendgrid.net",
    "port"      =>  587,
    "username"  =>  "apiKey",
    "password"  =>  myApiKey,
    "from"      =>  [
        "name"      =>  "Some Name",
        "address"   =>  "somename@email.com"
    ]
]);
Mail::raw("Sample message sent from the backend route (test-mail)", function ($message){
    $message->to("myrecepient@gmail.com")->subject("Sample Email");
});

一个解决方案真的很有帮助。

在您的原始配置中,您有:

MAIL_USERNAME = 'apikey'

哪个是对的。 在您的动态配置中,您有:

    "username"  =>  "apiKey",

其中有一个大写的“K”并且是不正确的。 将其更改为“apikey”,它将再次起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM