我正在尝试在我的Laravel 9项目中集成Sendinblue API。因此,我正在跟踪来自https://laravel.com/docs/9.x/mail#custom-transports的文档
我安装了"symfony/sendinblue-mailer“包,这是一个编辑过的services.php文件,现在看起来如下:
<?php
return [
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
'scheme' => 'https',
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'sendinblue' => [
'key' => 'My-code-is-here',
],];
此外,我还通过文档中的以下代码修改了AppServiceProvider.php,以便文件现在包含:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Mail;
use Symfony\Component\Mailer\Bridge\Sendinblue\Transport\SendinblueTransportFactory;
use Symfony\Component\Mailer\Transport\Dsn;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
//
}
public function boot()
{
Mail::extend('sendinblue', function () {
return (new SendinblueTransportFactory)->create(
new Dsn(
'sendinblue+api',
'default',
config('services.sendinblue.key')
)
);
});
}}
当我试图发送电子邮件时,我会得到以下错误:InvalidArgumentException: Mailer未定义。文件中的\vendor\laravel\framework\src\Illuminate\Mail\MailManager.php在第110行
我怎样才能解决这个问题?谢谢!
发布于 2022-10-28 16:33:41
简单的curl,您可以使用。我在我的生产服务器中使用下面的代码块,并且工作非常完美。
// ********** API EMAIL START **************
$toName = 'TO NAME';
$toEmail = 'TO EMAIL';
$fromName = 'FROM NAME';
$fromEmail = 'FROM EMAIL';
$subject = 'TEST SUBJECT';
$htmlMessage = '<p>Hello '.$toName.',</p><p>This is my first transactional email sent from Sendinblue.</p>';
$data = array(
"sender" => array(
"email" => $fromEmail,
"name" => $fromName
),
"to" => array(
array(
"email" => $toEmail,
"name" => $toName
)
),
"subject" => $subject,
"htmlContent" => '<html><head></head><body><p>'.$htmlMessage.'</p></p></body></html>'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.sendinblue.com/v3/smtp/email');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$headers = array();
$headers[] = 'Accept: application/json';
$headers[] = 'Api-Key: YOUR API KEY';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
/*
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
print_r($result);
*/
// ********* EMAIL API END **********************https://stackoverflow.com/questions/73831553
复制相似问题