Laravel 拉雷维尔,邮枪已经安装好了

Laravel 拉雷维尔,邮枪已经安装好了,laravel,laravel-5,mailgun,Laravel,Laravel 5,Mailgun,我能读的都读了 看起来我已经设置好了,并根据文档(和互联网)到处填写,但仍然无法收到任何电子邮件 我需要使用MailGun API,以便可以从本地主机以及测试和prod+发送电子邮件,因为25端口通常是关闭的 我填写了所有我能填写的内容,以防奇迹发生(在.env中smtp/mailgun之间发生了变化) 我已经尝试了我真正的服务器设置,当我失败时,我也尝试了没有任何成功的沙盒 我的邮枪数据访问(某些字母隐藏): 我的mailgun沙盒服务器 当我点击它时,我可以在API和SMTP之间进行选择

我能读的都读了 看起来我已经设置好了,并根据文档(和互联网)到处填写,但仍然无法收到任何电子邮件

我需要使用MailGun API,以便可以从本地主机以及测试和prod+发送电子邮件,因为25端口通常是关闭的

我填写了所有我能填写的内容,以防奇迹发生(在
.env
中smtp/mailgun之间发生了变化)

我已经尝试了我真正的服务器设置,当我失败时,我也尝试了没有任何成功的沙盒

我的邮枪数据访问(某些字母隐藏):

  • 我的mailgun沙盒服务器

  • 当我点击它时,我可以在API和SMTP之间进行选择
    2.1在API选项卡中,我有API密钥:
    2.2在SMTP框中,我有SMTP主机、端口、登录名、密码:

  • 我的
    .env
  • 在互联网的某个地方发现了MAILGUN\u域和MAILGUN\u秘密 可以添加到
    .env
    中,因此也可以在此处尝试

  • config/mail.php
  • app/mail/Test.php
  • 沙盒“到”电子邮件已验证

  • TestController

  • resources/views/test.blade.php
  • 即使这样也只是以防万一
  • 九,


    请帮忙,少了什么?我做错了什么?

    您需要使用环境设置的名称。例如,在您的示例中,用户名试图获取名为'postmaster@sandbox8ffexxxxxxxxxxd0cf6b4da3c2.mailgun.org这当然不存在

    'driver' => env('MAIL_DRIVER', 'mailgun'),
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('SUPPORT', 'hello@example.com'), //if SUPPORT env does not exist, default to hello@example.com
        'name' => env('NAME', 'Example'),
    ],
    'username' => env('MAIL_USERNAME'),
    
    'password' => env('PASSWORD'),
    

    使用env时,第一个参数即.env\u NAME是您在.env文件中设置的名称,第二个(可选)参数是未找到第一个值时默认的值。

    主机,
    \u端口
    \u用户名
    \u密码
    \u加密
    环境变量仅适用于SMTP。

    为此,您的
    MAIL\u驱动程序
    应该设置为SMTP,我刚才提到的五个值指向您的mailgun值

    \u域
    \u SECRET
    仅适用于设置了
    MAIL\u DRIVER=mailgun
    (即mailgun api)的情况,这意味着您不再使用SMTP驱动程序

    基本上,您可以选择:选择SMTP并将其指向mailgun(设置
    MAIL\u DRIVER=SMTP
    ),或mailgun API(设置
    MAIL\u DRIVER=mailgun

    我认为,如果你仔细思考,直到你理解这两者之间的区别,那么你应该能够解决它

    此外,在沙箱域中,除非将收件人地址添加为已验证的电子邮件,否则无法发送真实的电子邮件。您可以在mailgun仪表板上执行此操作。这可能是造成此问题的原因(这毕竟是一个沙箱——它是为了安全,所以你不会意外地通过特定地址的电子邮件验证发送到你没有特别选择的实时电子邮件地址)

    另一个技巧是,进入tinker并键入
    config('mail')
    ,您将看到框架接收到了什么。然后,如果您看到要输入的值肯定存在,您就不必调整实际的配置文件


    我还注意到您上面列出的配置文件是错误的。您有
    'driver'=>env('mailgun','mailgun'),
    ,这将不起作用(您将看到,如果您在tinker中配置('mail')),env()函数将使用环境变量的名称(就像MAILGUN_DOMAIN或MAILGUN_SECRET作为其第一个参数一样,如果该名称的shell环境变量不存在,则第二个参数是默认值).

    检查@kopz的答案,这是正确的,您需要在邮件配置文件中使用.env文件常量,实际上,您永远不需要更改config/mail,只需要指定.env文件中的常量。是的,这是部分问题,我已将键重命名为值,但我是在玩了bells和Witles之后才发现的。主要问题是这就是为什么我的配置中出现了来自John Doe的带有冒号的邮件,而我没有收到来自laravel或artisan config:cache的任何错误。当我看到它时,将冒号改为=然后删除了缓存,artisan对我说“嘿,配置中不能有空白”一旦删除了空格,一切都正常了,你的问题就解决了。是的,这部分问题是我重命名了值的键,但我是在玩了bells和Witles之后才发现的。主要问题是为什么在我的配置中出现了带有冒号的
    MAIL\u FROM\u NAME:John Doe
    ,而我没有收到任何类型的laravel或artisan config:cache中的错误。当我看到它时,将冒号改为=然后删除缓存,artisan对我说“嘿,配置中不能有空白”一旦删除了空格,所有内容都可以正常工作。我没有将电子邮件添加到verified-谢谢,但主要问题是我在config
    MAIL\u FROM\u NAME:John Doe
    中遇到了问题,laravel没有警告我配置错误。一旦我修复了它,所有内容都可以正常工作:(
        'driver' => env('MAIL_DRIVER', 'mailgun'),
    
        public function build()
        {
            return $this->from('support@sandbox8ffe89553e224c468f4ad0cf6b4da3c2.mailgun.org')
                        ->subject('HELLO')
                        ->view('test');
        }
    
    use App\Mail\Test;
    use Illuminate\Support\Facades\Mail;
    
    class TestController extends Controller
    {
        public function test()
        {
            echo 'hello';
    
            try {
                Mail::to('myaddress@gmail.com')->send(new Test());
            } catch  (\Exception $e) {
                dump($e);
            }
    
            echo 'hello2';
    
        }
    }
    
    
    hello
    
    > artisan cache:clear
    > artisan config:cache
    > artisan cache:clear
    
    'driver' => env('MAIL_DRIVER', 'mailgun'),
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('SUPPORT', 'hello@example.com'), //if SUPPORT env does not exist, default to hello@example.com
        'name' => env('NAME', 'Example'),
    ],
    'username' => env('MAIL_USERNAME'),
    
    'password' => env('PASSWORD'),