【问题标题】:Send Email Using SendGrid in Laravel 8在 Laravel 8 中使用 SendGrid 发送电子邮件
【发布时间】:2021-08-05 03:25:02
【问题描述】:

我正在尝试设置 SendGrid 以在我的 Laravel 8 项目中发送电子邮件。我一直在关注这个文档:

https://sendgrid.com/docs/for-developers/sending-email/laravel/

我按照他们的方式复制了 .env 邮件设置。我只是在密码字段中添加了我的 sendgrid api 密钥,并在“MAIL_FROM_ADDRESS”中添加了我的 sendgrid 验证电子邮件。

MAIL_MAILER=smtp
# MAIL_DRIVER=smtp # for laravel < 7
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=MY_SENDGRID_API_KEY
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="MY NAME"
MAIL_FROM_ADDRESS=MY VERIFIED EMAIL FROM SENDGRID

然后它要求我做一个 php artisan make:mail TestEmail ("app/Mail/TestEmail.php") 并复制以下代码:

<?php

namespace App\Mail;

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

class TestEmail extends Mailable
{
    use Queueable, SerializesModels;

    public $data;

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

    public function build()
    {
        $address = 'MY VERIFIED SENDGRID EMAIL ADDRESS';
        $subject = 'This is a test!';
        $name = 'MY NAME';

        return $this->view('emails.test')
                    ->from($address, $name)
                    ->cc($address, $name)
                    ->bcc($address, $name)
                    ->replyTo($address, $name)
                    ->subject($subject)
                    ->with([ 'test_message' => $this->data['message'] ]);
    }
}

然后我在“app/resources/views/emails/test.blade.php”中创建了一个视图:

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <h2>Test Email</h2>
    <p>{{ $test_message }}</p>
  </body>
</html>
Sendi

然后它告诉我使用以下代码发送电子邮件:

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Mail\TestEmail;

use Illuminate\Support\Facades\Mail;

class SendGridEmailController extends Controller
{
    public function sendMail()
    {
        $data = ['message' => 'This is a test!'];

        Mail::to('MY GMAIL ACCONT')->send(new TestEmail($data));
    }
}

对于上面的代码,文档没有说要创建控制器或任何东西,但在我的情况下,我确实创建了一个控制器“SendGridEmailController”并在那里添加了上面的代码。

然后,在我的 routes/web.php 文件中,我创建了一个路由:

Route::get('/test_email', [SendGridEmailController::class, 'sendMail']);

然后,当我尝试通过上述路线运行代码时,我收到此错误:

“给定邮箱中的地址 [mailtrap] 不符合 RFC 2822, 3.6.2。”

我不明白这个错误想说什么。我尝试查看 Google 搜索,甚至查看此处,但我找不到任何与我在 Laravel 中所面临的情况相关的内容。

也许我错过了什么或者没有正确设置 sendgrid?

感谢您在这方面的帮助。谢谢!

【问题讨论】:

    标签: php html laravel-blade laravel-8


    【解决方案1】:

    这是你运行的吗?

    php artisan config:cache
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2018-11-08
    • 1970-01-01
    • 2018-10-23
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2018-08-09
    相关资源
    最近更新 更多