簡體   English   中英

Laravel - 不使用 mailgun 發送電子郵件

[英]Laravel - No emails sending using mailgun

服務器:數字海洋

Ubuntu 16.04

Laravel 5.8

我無法使用mailgun.com從laravel發送電子郵件

在 Digital Ocean 中,我在防火牆上打開了所有傳出端口,我在 Digital Ocean 中為 TXT 和 MX 記錄設置了正確的 DNS。 我的域名注冊商上有正確且經過驗證的 DNS 記錄,而 mailgun 上的所有記錄都帶有綠色復選標記

配置/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'
];

配置/服務.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。

我認為在您的config/services.php ,mailgun.domain 應該更像mg.domain.com (或sandboxXXXXXXX.mailgun.org如果這是一個開發環境),而不是像您設置的 URL。

嘗試放置:

'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

網頁.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');
    });
});

服務.php

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
],

我一整天都在為同樣的問題(laravel + mailgun)苦苦掙扎。

這就是最終解決我的問題的原因。 希望這可以幫助!

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=mail.mydomain.com
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxx
MAIL_FROM_ADDRESS=kp@mydomain.com
MAIL_FROM_NAME='KP'

在路由/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM