Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过Laravel使用Mailgun从HTML表单发送数据_Php_Laravel_Mailgun - Fatal编程技术网

Php 通过Laravel使用Mailgun从HTML表单发送数据

Php 通过Laravel使用Mailgun从HTML表单发送数据,php,laravel,mailgun,Php,Laravel,Mailgun,目前,我正在从事一个有联系方式的Laravel项目。 当用户填写联系人表单并单击“操作”按钮时,表单中的数据应发送到我当前的电子邮件中 我遵循了一个教程,它告诉我如何通过mailtrap.io发送测试邮件。当表单中的内容被发送到mailtrap邮箱时,这种方法工作得非常好 目前,我使用从mailgun本身创建的沙盒域将.env文件更改为mailgun仪表板上获得的详细信息 MAIL_DRIVER=mailgun MAIL_HOST=smtp.mailgun.org MAIL_PORT=587 M

目前,我正在从事一个有联系方式的Laravel项目。 当用户填写联系人表单并单击“操作”按钮时,表单中的数据应发送到我当前的电子邮件中

我遵循了一个教程,它告诉我如何通过mailtrap.io发送测试邮件。当表单中的内容被发送到mailtrap邮箱时,这种方法工作得非常好

目前,我使用从mailgun本身创建的沙盒域将.env文件更改为mailgun仪表板上获得的详细信息

MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=THE_USERNAME
MAIL_PASSWORD=THE_PASSWORD
MAIL_ENCRYPTION=tls
我还安装了Guzzle,我的控制器如下所示

<?php

namespace App\Http\Controllers;

use App\Mail\ContactFormMail; 
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class ContactFormController extends Controller
{
    public function create()
    {
        return view('contact.create');
    }

    public function store()
    {
        $data = request()->validate([
            'name' => 'required',
            'email' => 'required|email',
            'phone' => '',
            'subject' => 'required',
            'message' => 'required'
        ]);

        //dd(request()->all());

        // SEND EMAIL
        Mail::to('studiozalm040@gmail.com')->send(new ContactFormMail($data)); 

        //session()->flash('message', 'Bedankt voor je bericht. We zullen zo snel mogelijk contact met je opnemen.');
        return redirect('http://127.0.0.1:8000#contact')->with('message','Bedankt voor je bericht. We zullen zo snel mogelijk contact met je opnemen.');
    }
}

您正在使用邮件驱动程序“mailgun”,但正在为mailgun提供SMTP凭据

如果要使用mailgun API,应提供以下环境变量:

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=x
MAILGUN_SECRET=y
如果您想使用smtp凭据,则应将MAIL_驱动程序从“mailgun”更改为“smtp”,然后保留当前环境的其余变量。 您的环境变量将如下所示:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=THE_USERNAME
MAIL_PASSWORD=THE_PASSWORD
MAIL_ENCRYPTION=tls

smtp配置发生在config/mail.php中,但API配置(如果要使用mailgun邮件驱动程序)发生在config/services.php中。错误日志中是否有错误?在您确保了这一点之后,我将检查Mailgun中的活动日志,看看API是否确实收到了您的请求。如果是这样,我会检查垃圾邮件文件夹,并再次检查电子邮件地址是否键入正确。这也可能是由于缓存配置(到旧设置)或错误销售等问题。我通常通过运行“php artisan tinker”,然后键入“config('mail')来检查这一点查看Laravel正在使用的实际设置。抱歉,我再次发表评论:您已键入“Mailgun”作为邮件驱动程序,但正在键入smtp凭据。所以我认为应该将邮件驱动程序设置为“smtp”。你是对的。我将MAIL_驱动程序改为“smtp”,一切都按照我的要求运行。非常感谢。很高兴我能帮忙!:-)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=THE_USERNAME
MAIL_PASSWORD=THE_PASSWORD
MAIL_ENCRYPTION=tls