Php 拉韦尔元';t将我的域传递给MailGun驱动程序,以便';不要发邮件

Php 拉韦尔元';t将我的域传递给MailGun驱动程序,以便';不要发邮件,php,email,laravel,mailgun,Php,Email,Laravel,Mailgun,这可能不是邮枪的问题,因为我也无法通过Gmail发送 我得到的错误如下所示,你可以看到域应该被传递到哪里,但没有 POST https://api.mailgun.net/v3//messages.mime 域应该是 POST https://api.mailgun.net/v3/domin/messages.mime 我知道我已经安装了Guzzle,我已经重申了web服务器,我知道我的详细信息是正确的。我创建了一个测试项目,只做邮件也没有用 可能是因为我的主机(MacBookAir)有问题

这可能不是邮枪的问题,因为我也无法通过Gmail发送

我得到的错误如下所示,你可以看到域应该被传递到哪里,但没有

POST https://api.mailgun.net/v3//messages.mime
域应该是

POST https://api.mailgun.net/v3/domin/messages.mime
我知道我已经安装了Guzzle,我已经重申了web服务器,我知道我的详细信息是正确的。我创建了一个测试项目,只做邮件也没有用

可能是因为我的主机(MacBookAir)有问题,还是因为我正在使用开发web服务器

 php artisan serve
我是拉威尔的新手,所以我不确定我还能做什么

services.php

  'mailgun' => [
        'domain' => env('sandbox*****.mailgun.org'),
        'secret' => env('key-**************'),
    ],
mail.php

'driver' => env('MAIL_DRIVER', 'mailgun'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
 'port' => env('MAIL_PORT', 587),
'from' => ['address' => null, 'name' => null],
 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
 'username' => env('postmaster@sandbox***********.mailgun.org'),
  'password' => env('sandboxpassword'),
 'sendmail' => '/usr/sbin/sendmail -bs',
 'pretend' => env('MAIL_PRETEND', false),
A已经停止使用env文件,因此默认为mail.php,但是当属性的细节相同时,结果是相同的。是的,只是以防万一,我知道你需要重新启动服务器,当你改变了.env,只是为了在安全的网站上,我一直在这样做时,改变了mail.php或services.php

  'mailgun' => [
        'domain' => env('sandbox*****.mailgun.org'),
        'secret' => env('key-**************'),
    ],
TestController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Mail;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller
{
    public function index() {
        Mail::raw('Text to e-mail', function ($message) {
            $message->from('us@example.com', 'Laravel');

            $message->to('dksnowdon@gmail.com');
        });

        return view('welcome');
    }
}

您需要将services.php配置保留为默认设置:

'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
    ],
然后在.env中,您需要放置:

MAILGUN_DOMAIN=yourdomain
MAILGUN_SECRET=yoursecret

除了kEpEx的答案之外,您还可以从services.php配置中删除env()部分

 'mailgun' => [
        'domain' => 'sandbox******.mailgun.org',
        'secret' => 'key-****',
    ],

如果有人正在努力解决这个问题,过了一段时间我发现我的主机阻塞了所有外部邮件服务器


他们只允许我使用他们自己的邮件服务器。如果你真的像我一样把头撞在墙上,也许值得检查一下。

你能给我们看看相关的代码吗?A我已经添加了我认为相关的代码,但没有错误。如果你还想要什么,就说吧。感谢您的帮助您使用什么代码发送电子邮件?您可以通过将
from
更改为
'from'=>['address'=>来检查吗abc@xxx.com“,”name'=>”xxx']
我也不确定,但域名将完全符合您的预期,即您发送邮件的域名。您的网站名称。看看这个,先生,你是个天才。非常感谢。所以services.php文件表示env文件中的额外属性是的,我从未遇到过services.php文件为.env文件分配变量的地方。但是说我还没有全面阅读文档。@helloworld问一个问题并放置链接,这样我就可以帮助您这看起来像是laravel开发人员的疯狂行为,我认为没有理由不更新services.php,因为他们自己的文档说要将domain和secret放在其中,但实际上这不起作用,不知道为什么,这很奇怪,但正如kEpEx所说,将域和秘密放在.env文件中就像一个符咒。先生,在这个问题上浪费了半天之后,你又为我节省了几天时间。thxOops my bad,文档中说要使用'mailgun'=>['domain'=>'your mailgun domain','secret'=>'your mailgun key',],我在文档中读起来就像'domain'=>env('your-mailgun-domain')'secret=>env('your-mailgun-key')。因此,要使用services.php,我们需要删除env()函数包装器,它不需要将MAILGUN_DOMAIN和MAILGUN_SECRET放在.env文件中。对于初学者来说非常有趣和混乱。该死,我从来没有注意到文档中没有env()。这就像盲目阅读。