代码之家  ›  专栏  ›  技术社区  ›  nature

Laravel 5联系人表单不工作

  •  2
  • nature  · 技术社区  · 6 年前

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

    这是 视图 (减少):

    {!! 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'));
        }
    }
    

    视图 网站/电子邮件/联系人 仅为电子邮件的格式:

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

    这个 路由 在路由/网络中。php

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

    在里面 配置/邮件。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'),
    

    最后在 。环境 :

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

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   Option    6 年前

    测试您可以利用的电子邮件 mailtrap.io 并将用户名/密码等添加到。环境设置。

    以下是我通常的阐述方式:

    控制器:

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

    网络/电子邮件/联系人。刀片(基本示例):

    <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 或者,您可以简单地删除这些内容并添加自己的姓名/电子邮件地址。