邮件未通过 Mailgun 发送 API Laravel 8
Mail Not Sending via Mailgun API Laravel 8
我正在尝试从我的控制器通过 mailgun API 发送邮件,但是邮件没有到达 mailgun,而且我没有收到任何错误 messages/logs。
这是我的 .env
:
MAIL_MAILER=mailgun
MAILGUN_DOMAIN=subdomain.domain.ca
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxx
这是我的 services.php
:
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third-party services such
| as Mailgun, Postmark, AWS, and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('subdomain.domain.ca'),
'secret' => env('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
],
'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'),
],
];
这是我的 mail.php
:
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'mailgun'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'info@domain.ca'),
'name' => env('MAIL_FROM_NAME', 'From name'),
],
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown-based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
这就是我在控制器中发送邮件的方式:
Mail::send('emailtemplates.trackeremail', $data, function($message)use($data, $pdf) {
$message->to($data["toaddress"])
->cc($data["ccaddress"])
->subject($data["title"])
->attachData($pdf->output(), "PDFName.pdf");
});
当我在本地环境中通过 SMTP 发送到 mailgun 时,这是有效的,但不幸的是,我仅限于不允许第 3 方 SMTP 的共享主机,我需要切换到 API 生产方法。我已经阅读了本网站(和其他网站)上的许多相关教程和问题,但没有解决我的问题。
我总是 运行 php artisan config:clear
在任何类型的 .env
改变之后。
我还能做些什么来获得错误消息或进一步调试吗?任何帮助将不胜感激。
可能是端口、主机、加密和邮件来自:
保持这些在您的 .env
:
MAIL_MAILER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
在您的 .env
中输入这些:
MAIL_FROM_NAME=YourNameHere
MAIL_FROM_ADDRESS=enter@theemail.com
MAIL_FROM=enter@theemail.com
MAILGUN_DOMAIN=subdomain.domain.ca
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxx
更新 services.php
为:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
更新 mail.php
添加:
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'port' => env('MAIL_PORT', 587),
在与 A2 Hosting 的技术支持人员讨论后发现,这对于他们的共享主机来说是不可能的,我被告知“Mailgun 仅支持标准 SMTP 端口,因此我们的共享服务器不支持它".
我正在尝试从我的控制器通过 mailgun API 发送邮件,但是邮件没有到达 mailgun,而且我没有收到任何错误 messages/logs。
这是我的 .env
:
MAIL_MAILER=mailgun
MAILGUN_DOMAIN=subdomain.domain.ca
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxx
这是我的 services.php
:
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third-party services such
| as Mailgun, Postmark, AWS, and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('subdomain.domain.ca'),
'secret' => env('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
],
'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'),
],
];
这是我的 mail.php
:
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'mailgun'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'info@domain.ca'),
'name' => env('MAIL_FROM_NAME', 'From name'),
],
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown-based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
这就是我在控制器中发送邮件的方式:
Mail::send('emailtemplates.trackeremail', $data, function($message)use($data, $pdf) {
$message->to($data["toaddress"])
->cc($data["ccaddress"])
->subject($data["title"])
->attachData($pdf->output(), "PDFName.pdf");
});
当我在本地环境中通过 SMTP 发送到 mailgun 时,这是有效的,但不幸的是,我仅限于不允许第 3 方 SMTP 的共享主机,我需要切换到 API 生产方法。我已经阅读了本网站(和其他网站)上的许多相关教程和问题,但没有解决我的问题。
我总是 运行 php artisan config:clear
在任何类型的 .env
改变之后。
我还能做些什么来获得错误消息或进一步调试吗?任何帮助将不胜感激。
可能是端口、主机、加密和邮件来自:
保持这些在您的 .env
:
MAIL_MAILER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
在您的 .env
中输入这些:
MAIL_FROM_NAME=YourNameHere
MAIL_FROM_ADDRESS=enter@theemail.com
MAIL_FROM=enter@theemail.com
MAILGUN_DOMAIN=subdomain.domain.ca
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxx
更新 services.php
为:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
更新 mail.php
添加:
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'port' => env('MAIL_PORT', 587),
在与 A2 Hosting 的技术支持人员讨论后发现,这对于他们的共享主机来说是不可能的,我被告知“Mailgun 仅支持标准 SMTP 端口,因此我们的共享服务器不支持它".