【问题标题】:Laravel 5 contact form not workingLaravel 5联系表格不起作用
【发布时间】:2018-08-14 10:21:10
【问题描述】:

我没有任何错误,但我没有收到来自表单的任何电子邮件。

这是视图(缩小):

{!! Form::open(['route' => 'contact_store', 'class' => 'form', 'method' => 'POST', 'files' => false]) !!}

        <input type="text" id="nombre" name="nombre" class="form-control">
        <input type="text" id="email" name="email" class="form-control">

        <textarea id="texto" name="texto" class="form-control"></textarea>

        {!! Form::submit('enviar', ['class' =>'btn btn-primary']) !!}

        {!! Form::close() !!}

控制器有两种方法:

namespace App\Http\Controllers\Web;

use App\Http\Requests\ContactRequest;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;

class ContactController extends Controller
{
    public function create()
    {
        return view('web.nosotros.escribenos.escribenos');
    }
    public function store(Request $request)
    {
        $data = array(
            'nombre' => $request->nombre,
            'email' => $request->email,
            'texto' => $request->texto,
        );

        Mail::send('web.emails.contact', $data, function($message) use ($data){
            $message->from($data['email']);
            $message->to('my_email@domain.com');
            $message->subject('web contact');
        });

        return view('web.nosotros.escribenos.escribenos', compact('data'));
    }
}

视图web/emails/contact只是电子邮件的格式:

<h3>New message from the web!</h3>
<div>
    {{$texto}}
</div>
<p>from: {{ $email }}</p>

routes/web.php 中的路由

Route::get('escribenos', ['as' => 'contact', 'uses' => 'ContactController@create']);
Route::post('escribenos', ['as' => 'contact_store', 'uses' => 'ContactController@store']);

config/mail.php 我有:

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'mydomain.com'),
'port' => env('MAIL_PORT', 25),
'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'webmaster@mydomain.com'),
        'name' => env('MAIL_FROM_NAME', 'webmaster'),
    ],
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),

最后在 .env 中:

MAIL_DRIVER=smtp
MAIL_HOST=mydomain.com
MAIL_PORT=25
MAIL_USERNAME=webmaster@mydomain.com
MAIL_PASSWORD=my_password
MAIL_ENCRYPTION=null

一切似乎都很好,我没有任何错误,但我也没有收到任何电子邮件。任何想法?谢谢。

【问题讨论】:

  • 检查您的垃圾邮件箱以及端口 t25 是否打开

标签: php forms laravel sendmail contact-form


【解决方案1】:

要测试您的电子邮件,您可以使用 mailtrap.io 并将用户名/密码等添加到 .env 设置中。

我一般会这样设置:

控制器:

use Illuminate\Support\Facades\Input;

    public function sendEmail(Request $request)
        {
            $data = array(
                'nombre' => $request->get('nombre'),
                'email' => $request->get('email'),
                'texto' => $request->get('texto')
            );

            // php artisan make:mail sendMessage - this needs to be ran in terminal / cmd
            Mail::to(config('mail.from.address'))->send(new sendMessage($data));
        }

SendMail.php:

private $data;

    public function __construct($data)
    {
        $this->data = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        $data = $this->data;
        return $this->view('web.emails.contact', compact('data'))
            ->subject('Web Contact')
            ->from(Input::get('email'));
    }

web/emails/contact.blade(基本示例):

<p>
    Hey there {{ config('mail.from.name') }}
</p>
<p>
    You have an email from {{ $data['nombre'] }} - email address {{ $data['email'] }}
</p>
<p>
    {!! $data['texto'] !!}
</p>

config('mail.from.name) & config('mail.from.address) 可以在config/mail.php 内调整,或者您可以简单地删除这些并添加您自己的姓名/电子邮件地址。

【讨论】:

  • 不是真的...阅读laravel.com/docs/5.5/requests#retrieving-input 通过动态属性检索输入部分
  • 看来这不是问题,数据确实很好地吸收了它们。当我创建一个 dd ($ data) 时,结果是:array: 6 [▼ "name" =&gt; "Nature" "email" =&gt; "test@mydomain.com" "text" =&gt; "test" ] 我仍然按照您指示的方式尝试了它,结果是一样的,一切都很好,但我没有收到电子邮件。
  • @nature。我已经为您进行了大量编辑,以了解最佳方法以及有关使用 mailtrap.io 测试邮箱的更多信息。
  • 我看到@Option 我必须创建一个 Mailable。我要测试一下……
  • @nature,我强烈建议使用 mailtrap.io 进行测试,它非常适合 localhost 电子邮件测试等。
猜你喜欢
  • 1970-01-01
  • 2014-03-31
  • 2016-10-28
  • 2014-10-04
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多