Whi*_*zle 6 php email laravel mailgun
我正在尝试使用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**********
Run Code Online (Sandbox Code Playgroud)
在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'),
],
Run Code Online (Sandbox Code Playgroud)
在services.php文件中
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
Run Code Online (Sandbox Code Playgroud)
我写了默认路径的邮件发送代码,例如
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?');
});
});
Run Code Online (Sandbox Code Playgroud)
我还安装了Laravel软件包“ guzzlehttp / guzzle” 6.2版来发送邮件。
但是当我拨打该默认本地路由时,如上所述,我收到一条错误消息。
我在包括论坛“ stackoverflow.com”在内的任何地方都找不到针对我的错误的解决方案。
谁能帮我吗?
Dar*_*phy 11
如果您不使用美国 Mailgun 区域,您可以在服务配置文件中定义您的区域的端点:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'),
],
Run Code Online (Sandbox Code Playgroud)
或者,可以在 .env 文件中定义 MAILGUN_ENDPOINT:
MAILGUN_ENDPOINT="api.eu.mailgun.net"
Run Code Online (Sandbox Code Playgroud)
坦白讲,这是一个磨难,我让沙盒的工作方式如下
MAILGUN_DOMAIN和MAILGUN_SECRET太为services.php使用它们。请记住,MAILGUN_SECRET它是私钥,以开头key-,请不要在此处使用公钥MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@sandboxcc*****************.mailgun.org
MAIL_PASSWORD=******************
MAIL_ENCRYPTION=tls小智 6
ok找到了,在文件“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 条目中添加一个“端点”键。