连接 maligun API 和 Laravel 5.2 时发送邮件
Mail sending when hooking up maligun API with Laravel 5.2
作为测试,当我访问我的“/”路由时,相关控制器会发送一封测试电子邮件。但是,我收到此错误:
客户端错误:POST https://api.mailgun.net/v3/My domain name/messages.mime
导致 401 UNAUTHORIZED
响应:
禁止
这是我的控制器。
public function index()
{
$data = [];
\Mail::send('emails.test', $data, function($message)
{
$message->to('my_test_email@gmail.com')->subject('test email');
});
}
我认为问题在于我对 mailgun 的设置 API。这是我的 .env 文件,我在其中设置了我的 mail.I 我不确定我是否在此处正确使用了我的 API 密钥和域名。
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=port number (which is different to that in the mail.php file)
MAIL_USERNAME=My domain name
MAIL_PASSWORD=My API Key
MAIL_ENCRYPTION=tls
这是我的 mail.php 文件
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'test@gmail.com', 'name' => 'Test'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('My domain name'),
'password' => env('My API Key'),
'sendmail' => '/usr/sbin/sendmail -bs',
我的 services.php 文件中也有这个
'mailgun' => [
'domain' => 'My domain name',
'secret' => 'My API key',
],
我的composer.json文件
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*",
"guzzlehttp/guzzle": "~5.3|~6.0"
},
在您的 mail.php
中,您需要将 username
和 password
更改为:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
为了从 .env
中读取值。
另外,MAILGUN_SECRET
和MAIL_PASSWORD
不一样:
'mailgun' => [
'domain' => 'My domain name',
'secret' => 'My API key', //<-- Here is not the same as MAIL_PASSWORD
],
注意: 邮件端口是 587(对我来说没问题)!
我的 API 键有误
作为测试,当我访问我的“/”路由时,相关控制器会发送一封测试电子邮件。但是,我收到此错误:
客户端错误:POST https://api.mailgun.net/v3/My domain name/messages.mime
导致 401 UNAUTHORIZED
响应:
禁止
这是我的控制器。
public function index()
{
$data = [];
\Mail::send('emails.test', $data, function($message)
{
$message->to('my_test_email@gmail.com')->subject('test email');
});
}
我认为问题在于我对 mailgun 的设置 API。这是我的 .env 文件,我在其中设置了我的 mail.I 我不确定我是否在此处正确使用了我的 API 密钥和域名。
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=port number (which is different to that in the mail.php file)
MAIL_USERNAME=My domain name
MAIL_PASSWORD=My API Key
MAIL_ENCRYPTION=tls
这是我的 mail.php 文件
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'test@gmail.com', 'name' => 'Test'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('My domain name'),
'password' => env('My API Key'),
'sendmail' => '/usr/sbin/sendmail -bs',
我的 services.php 文件中也有这个
'mailgun' => [
'domain' => 'My domain name',
'secret' => 'My API key',
],
我的composer.json文件
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*",
"guzzlehttp/guzzle": "~5.3|~6.0"
},
在您的 mail.php
中,您需要将 username
和 password
更改为:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
为了从 .env
中读取值。
另外,MAILGUN_SECRET
和MAIL_PASSWORD
不一样:
'mailgun' => [
'domain' => 'My domain name',
'secret' => 'My API key', //<-- Here is not the same as MAIL_PASSWORD
],
注意: 邮件端口是 587(对我来说没问题)!
我的 API 键有误