如何使用Laravel发送电子邮件?

Moh*_*iry 5 php laravel laravel-5

我正在尝试发送电子邮件,但是我不能再动了,这就是我的观点:

<h1>Contact TODOParrot</h1>


<form action="contact" method="post">

<div class="form-group">
 <label>Your First Name</label>
 <input type="text" name="Fname" placeholder="Your First Name" />
</div>

<div class="form-group">
  <label>Your Last Name</label>
  <input type="text" name="Lname" placeholder="Your Last Name" />
</div>

<div class="form-group">
<label>Your Email</label>
  <input type="email" name="Email" placeholder="Your Email" />
</div>
<div class="form-group">
<label>Your Phone Number</label>
  <input type="text" name="Phone" placeholder="Your Phone" />
</div>
<div class="form-group">
<label>Your Order</label>
  <input type="text" name="Order" placeholder="Your Order" />
</div>

<div class="form-group">
    <button class="btn btn-default" name="Submit" type="Submit">Send Order</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

那就是我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests\ContactFormRequest;


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

    public function store(ContactFormRequest $request)
    {
        \Mail::send('about.contact',
        array(
            'Fname' => $request->get('Fname'),
            'Lname' => $request->get('Lname'),
            'Email' => $request->get('Email'),
            'Phone' => $request->get('Phone'),
            'Order' => $request->get('Order')
        ), function($message)
    {
        $message->from('mohamedsasa201042@yahoo.com');
        $message->to('elbiheiry2@gmail.com', 'elbiheiry')->subject('TODOParrot Feedback');
    });

        return \Redirect::route('contact')
      ->with('message', 'Thanks for contacting us!');
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的路线:

Route::get('contact', 
  ['as' => 'contact', 'uses' => 'AboutController@create']);
Route::post('contact', 
  ['as' => 'contact', 'uses' => 'AboutController@store']);
Run Code Online (Sandbox Code Playgroud)

这就是.env文件中的配置:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=ssl
Run Code Online (Sandbox Code Playgroud)

当我按发送时,我删除了问题中的名称和密码,这给了我“禁止”的信息。有人可以帮忙吗?

may*_*ʎɐɯ 5

和OP聊完之后,得到了答案。

主要问题:

ContactFormRequest.php有以下规则功能:

public function rules()
    {
        return [
        'name'    => 'required',
        'email'   => 'required|email',
        'message' => 'required',
        ];
    }
Run Code Online (Sandbox Code Playgroud)

但是您的表单没有名称和消息,因此您需要删除不存在的元素或根据需要修改它们,出于测试目的,我只保留了电子邮件:

public function rules()
    {
        return [
            'Email' => 'required|email',
        ];
    }
Run Code Online (Sandbox Code Playgroud)

保持名称约定是一个很好的做法,就像使用大写电子邮件E而不是在任何地方都使用电子邮件一样。

因此,该表格从未提交发送。

我还建议您构建store我已经做过的函数并进行测试,它可以工作,您可以修改它以满足您的要求:

$data = [
            'no-reply' => 'contact-from-web@nomail.com',
            'admin'    => 'mohamedsasa201042@yahoo.com',
            'Fname'    => $request->get('Fname'),
            'Lname'    => $request->get('Lname'),
            'Email'    => $request->get('Email'),
            'Phone'    => $request->get('Phone'),
            'Order'    => $request->get('Order'),
        ];

        \Mail::send('about.contact', ['data' => $data],
            function ($message) use ($data)
            {
                $message
                    ->from($data['no-reply'])
                    ->to($data['admin'])->subject('Some body wrote to you online')
                    ->to($data['Email'])->subject('Your submitted information')
                    ->to('elbiheiry2@gmail.com', 'elbiheiry')->subject('Feedback');
            });
Run Code Online (Sandbox Code Playgroud)

它应该有效,

我仅使用 Mandrill API 电子邮件服务进行了测试,但您可以使用 SMTP 或 API 尝试一下,这取决于您。

如果您想进行电子邮件确认,您需要创建电子邮件确认视图,将您的数据转发给它,如下所示:

\Mail::send('about.emailconfirmation', ['data' => $data],
Run Code Online (Sandbox Code Playgroud)

你的视图可能如下所示:

<tr>
    <td>
        <h1>Contact form</h1>
        <p>Dear {{ $data['Fname'] }},</p>
        <p>Thank you for contacting me.</p>
        <p>I will respond to your inquiry as quickly as possible.</p>
        <hr/>
        <p><b>Provided email</b></p>
        <p>Email: {{ $data['Email'] }},</p>
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

这只是示例,但您可以进一步修改它。