【问题标题】:Laravel 7 internal server error 500 when sending email发送电子邮件时 Laravel 7 内部服务器错误 500
【发布时间】:2021-08-05 15:23:01
【问题描述】:

我在使用 laravel 发送电子邮件时遇到了一些问题。我已经查看了 stackoverflow 的解决方案,但到目前为止都没有。到目前为止,这是我的环境和代码。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=myemail.gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl
MAIL_SETUP=false

MAIL_FROM_ADDRESS=myemail.gmail.com
MAIL_FROM_NAME="Namehere"

这是我的 mail.php 文件

'smtp' => [
        'transport' => 'smtp',
        'host' => env('MAIL_HOST', 'smtp.googlemail.com'),
        'port' => env('MAIL_PORT', 465),
        'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
        'timeout' => null,
        'auth_mode' => null,
    ],

  'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'myemail@gmail.com'),
    'name' => env('MAIL_FROM_NAME', 'myemail@gmail.com'),
],

现在这是我的代码。这只是一个简单的测试电子邮件功能。这是在邮件文件夹中创建的类

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class NewTicketMail extends Mailable
{
use Queueable, SerializesModels;
public $details;

/**
 * Create a new message instance.
 *
 * @return void
 */
public function __construct($details)
{
    $this->$details;
}

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->subject('Mail from ')->view('emails.new_ticket_mail');
}
}

这就是所谓的路线

Route::get('send-email', function(){
$details = [
    'title'=> 'New Ticket Received',
    'body' => 'We have received your ticket and will process it. Please do not reply to this 
   email'
];

 \Mail::to('receiver@gmail.com')->send(new \App\Mail\NewTicketMail($details));
return view('emails.thanks');
});

如果我将 Mail to line 注释掉,则该路线有效。有什么建议么?我已经玩了好几个小时了。

【问题讨论】:

  • 检查你的服务器日志找出500的原因。Laravel日志在storage/logs
  • 我检查过了,奇怪的是没有提到错误500。
  • 发生该错误时,Laravel 日志中根本没有任何信息?
  • 我现在已将应用程序调试更改为 true,我将 ErrorException 数组改为字符串转换
  • 请分享更多详细信息,例如您所面临的完整和准确的错误消息,以及您解决错误的尝试

标签: php laravel mailing


【解决方案1】:

在您的邮件类中,您正在访问一个不存在的属性。

而是在您的可邮寄构造函数中执行类似的操作

public function __construct($details){
    $this->details = $details;
}

这肯定是一个问题。因为 laravel 会抛出未知属性错误。

附:如果您没有在日志中看到错误,请确保您的环境已调试为 true。

【讨论】:

  • 好的,我已将调试更改为 true,并且我现在将 ErrorException 数组转换为字符串错误。我也改变了细节的东西,但仍然是数组错误
  • Nvm 你的解决方案是正确的。我没有意识到在此之后-> 没有美元符号。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 2018-08-30
  • 1970-01-01
  • 2017-07-18
  • 2018-10-16
  • 2021-04-17
  • 1970-01-01
相关资源
最近更新 更多