我正在尝试使用Mailgun在Laravel 5.4项目中发送邮件。我想我正确设置了配置。但是,我收到了此错误消息,例如
RequestException.php第111行中的ClientException: 客户端错误:
POST https://api.mailgun.net/v3/sandboxfeb88d58f18841738b2fc81d7cbc7631.mailgun.org/messages.mime
>导致401 UNAUTHORIZED
响应: 禁
这是我的配置:
<。> .env文件MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=sandboxfeb88d58f18841738b2fc81d7cbc7631.mailgun.org
MAILGUN_SECRET=pubkey-1767e**********
在mail.php文件中
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'richi.htoo@gmail.com'),
'name' => env('MAIL_FROM_NAME', 'Richi Htoo'),
],
在services.php文件中
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
我在默认路线中写邮件发送代码,例如
Route::get('/', function () {
//return view('welcome');
$data = [
'title' => 'Hi student I hope you like the course',
'content' => 'This laravel course was created with a lot of love and dedication for you'
];
Mail::send('emails.test', $data, function($message){
$message->to('white.nuzzle@gmail.com', 'White Nuzzle')->subject('Hello student how are you?');
});
});
我还安装了Laravel Package“guzzlehttp / guzzle”6.2版发送邮件。
但是当我调用默认的主路由时,我收到了一条错误消息,如上所述。
我无法找到任何解决方案,包括论坛“stackoverflow.com”。
有人可以帮我吗?
答案 0 :(得分:5)
坦率地说,这是一次非常严峻的考验,我让沙箱的工作方式如下:
typeof(object).GetTypeInfo().Assembly.GetName().Version.ToString()
和MAILGUN_DOMAIN
。请记住MAILGUN_SECRET
是私钥,以MAILGUN_SECRET
开头,请勿在此处使用公钥key-
答案 1 :(得分:2)
确保检查邮件的凭据,确保它们是正确的。
不要复制公共验证密钥。 请复制私有API密钥
答案 2 :(得分:2)
如果您没有使用美国 Mailgun 地区,您可以在服务配置文件中定义您地区的端点:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'),
],
答案 3 :(得分:1)
默认邮件驱动程序:Mailgun
MAILGUN_DOMAIN=*your-domain*.mailgun.org
MAILGUN_SECRET=pubkey-*your-public-key*
默认邮件驱动程序:SMTP
MAIL_USERNAME=postmaster@*your-domain*.mailgun.org
MAIL_PASSWORD=*your-password*
别忘了php artisan config:clear
答案 4 :(得分:0)
我个人从来没有让沙箱帐户工作。我刚刚在一个多月前做了这件事。 Sandbox从未工作过,但我创建的真实账户却没有。尝试切换到真实帐户,并告诉我这是否适合您。
答案 5 :(得分:0)
转到配置文件夹。并做了一些改变..
'mailgun' => [
'domain' => env('your_domainxxxxxxx.mailgun.org'),
'secret' => env('key-xxxxxxxx_private_API_keyxxxx'),
],
错误将得到解决。
答案 6 :(得分:0)
确定, 在文件“ vendor \ laravel \ framework \ src \ Illuminate \ Mail \ Transport \ MailgunTransport.php”中,使用的端点是美国一。
如文档https://documentation.mailgun.com/en/latest/api-intro.html#mailgun-regions中所述,您拥有美国和欧盟的端点。
如果您是欧洲人,则必须使用“ api.eu.mailgun.net”,否则会收到401。
只需更改端点:Laravel功能强大,他们就会考虑。您可以在config / services.php / mailgun条目中添加一个“端点”键。