当我尝试使用 mailgun 和 laravel 7 发送电子邮件时,我收到此错误预期响应代码 250,但收到代码“550”,并显示消息“550 5.7.1 中继被拒绝”。但我不知道该怎么办
这是来自 laravel APIpublic/index.php文件的代码。
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
Run Code Online (Sandbox Code Playgroud)
发送请求时,它返回时不带任何数据,status code: 200仅返回 from $kernel->handle。
dd('111');当我之前打印时
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
Run Code Online (Sandbox Code Playgroud)
它显示在请求的响应中,但是当我在之后打印时$response = $kernel->handle(),请求没有响应。
我在我的项目中使用 Laravel sanctum,以 angular 作为前端。从第二个 api 请求中获取未经身份验证。请让我知道我哪里出错了
前端-> 127.0.0.1:4200
后端-> 本地主机:8888
.env 配置
SESSION_DOMAIN=本地主机SANCTUM_STATEFUL_DOMAINS=127.0.0.1
将中间件auth:sanctum添加到 api.php 中的路由组
参考: https : //prnt.sc/rm9ejy
我按照Laravel 文档在 Laravel 中安装 Passport 服务。但是,当我想在用户模型中使用 HasApiToken 时,我收到错误未定义类型“Laravel\Passport\HasApiTokens”。
用户.php:
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
Run Code Online (Sandbox Code Playgroud)
Composer.json
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2.5",
"fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^1.0",
"guzzlehttp/guzzle": "^6.3",
"laravel/framework": "^7.0",
"laravel/passport": "^8.4",
"laravel/tinker": "^2.0",
"laravel/ui": "^2.0"
},
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?
我设置了一个事件和新频道:
class TaskCreated implements shouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $task;
public function __construct(Task $task)
{
$this->task = $task;
}
}
Run Code Online (Sandbox Code Playgroud)
并安装 Echo 并进行设置
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'pusher-key',
cluster: 'ap2',
encrypted: true
});
Run Code Online (Sandbox Code Playgroud)
然后我在发布任务时调用 TaskCreated 事件
event(new TaskCreated($task));
Run Code Online (Sandbox Code Playgroud)
然而,问题是 Echo 不听推送日志或任何东西。即使在 laravel-websockets 中,事件是作为 api 消息创建的。
这是 vue js Echo 实现:
mounted () {
axios.get('/tasks').then(response => (this.tasks = response.data));
Echo.channel('taskCreated').listen('TaskCreated', (e) => {
console.log(e);
this.tasks.push(task.body)
});
Run Code Online (Sandbox Code Playgroud)
在仪表板中:
api-message Channel: …
我有一个Laravel网站通过提供代客上backend.test和Nuxt SPA上nuxt.backend.test:3005。当我尝试使用Nuxt Auth模块向Sanctum进行身份验证时,出现以下 CORS 错误:
从源“ http://nuxt.backend.test:3005 ”访问“ http://backend.test/login ”处的 XMLHttpRequest已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头在请求的资源上。
我该如何解决?
Laravel 配置
config/cors.php:
<?php
return [
'paths' => ['*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
];
Run Code Online (Sandbox Code Playgroud)
routes/api.php:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Run Code Online (Sandbox Code Playgroud)
app/Http/Kernel.php:
protected $middlewareGroups = [
...
'api' => …Run Code Online (Sandbox Code Playgroud) 刚刚从 Laravel 6 升级到 7,在提交联系表单时出现上述错误响应。我最终找到了一个似乎有效的解决方案,我在这里提交以帮助下一个人。
在终端中运行:
composer require illuminate/mail
Run Code Online (Sandbox Code Playgroud)
将以下内容添加到控制器文件的顶部(在我的例子中为 app/Http/Controllers/Main.php):
use \Illuminate\Support\Facades\Mail;
Run Code Online (Sandbox Code Playgroud)
将其添加到 bootstrap/app.php 中:
$app->register(Illuminate\Mail\MailServiceProvider::class);
Run Code Online (Sandbox Code Playgroud)
保存并测试,它可以在本地主机上运行。
如果上述方法对您不起作用,此链接还提供了一些其他可能的问题和解决方案,我必须将其归功于 vipindasks。
https://laracasts.com/discuss/channels/lumen/lumen-52-mail-not-working
因为我想问一个问题:
即使网站和邮件程序现在正在运行,您是否发现此解决方案有任何问题?
我查看了针对类似问题提出的几个答案,但对我的案例没有任何作用。仅供参考,这是我在 Laravel 7 中的第一个项目,在我的 Mac 上运行良好。我已按照本文在我的服务器上部署了该项目。在网络上运行该项目时,出现以下错误:
致命错误:未捕获运行时异常:尚未设置外观根。在 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258
堆栈跟踪:#0 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(425): Illuminate\Support\Facades\Facade::__callStatic('replaceNamespac.. .', 数组) #1 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(402): Illuminate\Foundation\Exceptions\Handler->registerErrorViewPaths() # 2 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(313): Illuminate\Foundation\Exceptions\Handler->renderHttpException(Object(Symfony\Component\HttpKernel\)异常\HttpException))#3 /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(210):照亮\Foundation\Exceptions\Handler->prepareResponse(对象( Illuminate\Http\Request), Object(Symfony\Component\HttpKernel\Exception\HttpExcepti in /usr/www/users/utopiqwvpw/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php 第 258 行
我该如何修复它?
deployment runtimeexception composer-php laravel-facade laravel-7
我正在使用 Laravel 7,我想通过 Laravel Mail 门面使用 Sendemail 驱动程序发送电子邮件。当我使用 PHP 邮件功能时它有效,但我想使用 Laravel Mail 外观。
我的 .env 文件电子邮件配置:
MAIL_DRIVER=sendmail
MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'
Run Code Online (Sandbox Code Playgroud)
我在 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' …Run Code Online (Sandbox Code Playgroud) 这个问题可能听起来很愚蠢,但我真的很想知道是否有办法解决 artisan 命令中模型路径过长的问题。
我有一个按以下结构组织的模型:
`app\Models\Auth\User.php`
Run Code Online (Sandbox Code Playgroud)
在用户模型中,我将命名空间定义为:
namespace App\Models\Auth;
class User extends Authenticatable
{
}
Run Code Online (Sandbox Code Playgroud)
现在,每次我需要访问该模型时,例如在 artisantinker 命令中,我都需要编写以下内容:
>>> Models\Auth\User::create([..]);
Run Code Online (Sandbox Code Playgroud)
如果我省略完整路径,我只会收到错误failed to open stream: No such file or directory
有没有一种好方法可以为模型类提供别名,以便我可以在任何地方轻松访问它?
config/app.php这是一个好地方吗?我从未见过有人将模型放入别名部分,我不确定这是否是一个好主意。
laravel-7 ×10
laravel ×6
email ×2
php ×2
composer-php ×1
cors ×1
deployment ×1
laravel-mail ×1
mailgun ×1
namespaces ×1
nuxt.js ×1
sendmail ×1
vue.js ×1