Laravel - 没有使用 mailgun 发送电子邮件
Laravel - No emails sending using mailgun
服务器:数字海洋
Ubuntu16.04
Laravel 5.8
我无法使用 mailgun.com
从 laravel 发送电子邮件
在 Digital Ocean 中,我在防火墙上打开了所有传出端口,我在 Digital Ocean 中为 TXT 和 MX 记录设置了正确的 DNS。我的域名注册商上有正确且经过验证的 DNS 记录,并且 mailgun 上有一个绿色复选标记
config/mail.php
return [
'driver' => 'mailgun',
'host' => 'smtp.mailgun.org',
'port' => 587,
'from' => [
'address' => 'orders@domain.com',
'name' => 'Company Name'
],
'encryption' => 'tls'),
'username' => 'orders@mg.domain.com',
'password' => 'xxxxd663hd02j727bb2eefd1ea38bbe0-58bc211a-670xxxx'
];
config/services.php
'mailgun' => [
'domain' => 'https://api.mailgun.net/v3/mg.domain.com',
'secret' => 'xxxxehbe8v25g3374e5as3ff32a45995-39bc661a-4716xxxx',
],
控制器
use Illuminate\Support\Facades\Mail;
$data = [
'email' => 'email@yahoo.com',
'name' => 'Bob Smith'
];
$body_data = [
'id' => '1234'
];
Mail::send('emails.shipped', $body_data, function($message) use ($data)
{
$message->to($data['email'], $data['name'])->subject('Test Email');
});
当我将邮件驱动程序更改为日志然后检查日志文件时,它看起来很棒。一切看起来都很完美,我之前在 Laravel 5.5 上使用过 mailgun,没有任何问题。
我也尝试了新的 laravel 构建方法和同样的问题。
我没有收到任何错误,我检查了 apache2 上的日志,mailgun 中没有出现任何日志,当然收件箱或垃圾邮件中也没有电子邮件。
我的问题是,我遗漏了什么吗?我还能做什么其他故障排除?好像我的应用程序没有正确连接到 mailgun。
尝试放:
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
在你的 mailgun
数组中。
我正在使用 laravel 5.8 并且它使用所有默认配置
.env
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=sandbox8a408833ad1540e7b3a5d0151f606531.mailgun.org
MAILGUN_SECRET=92df7e85eeeaccaeae3d3b3164600666-87cdd773-8c819599
web.php
Route::get('send_test_email', function(){
Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
{
$message->to('your_test_email@gmail.com');
});
});
services.php
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
我认为在你的 config/services.php
中 mailgun.domain 应该更像
mg.domain.com
(或 sandboxXXXXXXX.mailgun.org
,如果那是开发环境),而不是像您设置的 url。
我为同样的问题 (laravel + mailgun) 苦苦挣扎了一整天。
这最终解决了我的问题。希望这对您有所帮助!
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=mail.mydomain.com
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxx
MAIL_FROM_ADDRESS=kp@mydomain.com
MAIL_FROM_NAME='KP'
在routes/web.php:
Route::get('/tst', function(){
Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
{
$message->to('kp@yahoo.com', 'K P')->subject('Hello there, how are you?');
});
echo "string";
});
注意:您需要确保您的 MAILGUN_DOMAIN 已设置并且 MX / DNS 记录存在于您的服务器/域中。这最多可能需要 24 小时才能传播(遗憾的是,这是最烦人的部分)。但这些都是您需要的设置。
您可以尝试在您的服务器中安装 SwiftMailer 库。
sudo apt install -y php-swiftmailer
服务器:数字海洋
Ubuntu16.04
Laravel 5.8
我无法使用 mailgun.com
从 laravel 发送电子邮件在 Digital Ocean 中,我在防火墙上打开了所有传出端口,我在 Digital Ocean 中为 TXT 和 MX 记录设置了正确的 DNS。我的域名注册商上有正确且经过验证的 DNS 记录,并且 mailgun 上有一个绿色复选标记
config/mail.php
return [
'driver' => 'mailgun',
'host' => 'smtp.mailgun.org',
'port' => 587,
'from' => [
'address' => 'orders@domain.com',
'name' => 'Company Name'
],
'encryption' => 'tls'),
'username' => 'orders@mg.domain.com',
'password' => 'xxxxd663hd02j727bb2eefd1ea38bbe0-58bc211a-670xxxx'
];
config/services.php
'mailgun' => [
'domain' => 'https://api.mailgun.net/v3/mg.domain.com',
'secret' => 'xxxxehbe8v25g3374e5as3ff32a45995-39bc661a-4716xxxx',
],
控制器
use Illuminate\Support\Facades\Mail;
$data = [
'email' => 'email@yahoo.com',
'name' => 'Bob Smith'
];
$body_data = [
'id' => '1234'
];
Mail::send('emails.shipped', $body_data, function($message) use ($data)
{
$message->to($data['email'], $data['name'])->subject('Test Email');
});
当我将邮件驱动程序更改为日志然后检查日志文件时,它看起来很棒。一切看起来都很完美,我之前在 Laravel 5.5 上使用过 mailgun,没有任何问题。 我也尝试了新的 laravel 构建方法和同样的问题。
我没有收到任何错误,我检查了 apache2 上的日志,mailgun 中没有出现任何日志,当然收件箱或垃圾邮件中也没有电子邮件。
我的问题是,我遗漏了什么吗?我还能做什么其他故障排除?好像我的应用程序没有正确连接到 mailgun。
尝试放:
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
在你的 mailgun
数组中。
我正在使用 laravel 5.8 并且它使用所有默认配置
.env
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=sandbox8a408833ad1540e7b3a5d0151f606531.mailgun.org
MAILGUN_SECRET=92df7e85eeeaccaeae3d3b3164600666-87cdd773-8c819599
web.php
Route::get('send_test_email', function(){
Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
{
$message->to('your_test_email@gmail.com');
});
});
services.php
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
我认为在你的 config/services.php
中 mailgun.domain 应该更像
mg.domain.com
(或 sandboxXXXXXXX.mailgun.org
,如果那是开发环境),而不是像您设置的 url。
我为同样的问题 (laravel + mailgun) 苦苦挣扎了一整天。
这最终解决了我的问题。希望这对您有所帮助!
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=mail.mydomain.com
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxx
MAIL_FROM_ADDRESS=kp@mydomain.com
MAIL_FROM_NAME='KP'
在routes/web.php:
Route::get('/tst', function(){
Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
{
$message->to('kp@yahoo.com', 'K P')->subject('Hello there, how are you?');
});
echo "string";
});
注意:您需要确保您的 MAILGUN_DOMAIN 已设置并且 MX / DNS 记录存在于您的服务器/域中。这最多可能需要 24 小时才能传播(遗憾的是,这是最烦人的部分)。但这些都是您需要的设置。
您可以尝试在您的服务器中安装 SwiftMailer 库。
sudo apt install -y php-swiftmailer