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

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

问题描述:

我试图发送电子邮件,但我不能动吧,这就是我的观点:如何使用Laravel发送电子邮件?

<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> 

,这是我的控制器:

<?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('[email protected]'); 
     $message->to('[email protected]', 'elbiheiry')->subject('TODOParrot Feedback'); 
    }); 

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

这就是我的路线:

Route::get('contact', 
    ['as' => 'contact', 'uses' => '[email protected]']); 
Route::post('contact', 
    ['as' => 'contact', 'uses' => '[email protected]']); 

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

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=465 
MAIL_USERNAME= 
MAIL_PASSWORD= 
MAIL_ENCRYPTION=ssl 

而我删除名称和密码的问题 当我按下发送给我'禁止'作为一条消息。 任何人都可以帮忙吗?

+0

您是否在Laravel中配置了您的电子邮件服务? –

+0

@ maytham-ɯɐɥʇʎɐɯ是我配置了它,我将编辑问题添加它 –

+0

@ maytham-ɯɐɥʇʎɐɯ我使用smtp –

与OP聊天后,这里是答案。

主要问题:

ContactFormRequest.php具有以下规则功能:

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

但是你的形式不具有名称和消息,所以你需要删除不存在的元素或修改他们,如果需要的,我的测试目的我也只保留电子邮件:

public function rules() 
    { 
     return [ 
      'Email' => 'required|email', 
     ]; 
    } 

而且这是一个很好的做法,以保持命名约定一样,如果你使用的电子邮件以c E比使用电子邮件每个地方。

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

我建议你也组织你的store功能,我已经做了测试和它的工作原理,你可以修改它以满足您的要求:

$data = [ 
      'no-reply' => '[email protected]', 
      'admin' => '[email protected]', 
      '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('[email protected]', 'elbiheiry')->subject('Feedback'); 
      }); 

,它应该工作,

我有测试它只使用Mandrill API电子邮件服务,但您可以尝试使用SMTP或API,这取决于您。

如果你想确认电子邮件,您需要转发创建电子邮件确认的数据查看到它像以下:

\Mail::send('about.emailconfirmation', ['data' => $data], 

和你所能观点是这样的:

<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> 

这只是一个例子,但你可以进一步修改它。

按我的理解,我认为你是在你的后藤ContactFormRequest您对本App/Http/Request/ContactFormRequest失踪authorize一部分,你将这个方法

public function authorize() 
{ 
    return false; 
} 

所以只设置返回为真。它将允许进一​​步的过程。

public function authorize() 
{ 
    return true; 
} 

编辑

改变你的Contact POST Route这个

Route::post('contact/store',['as' => 'contact-store', 'uses' => '[email protected]']); 

,并在窗体的行动,只是改变这一点。

<form action="contact/store" ........ 
+0

我已经做到了,并没有帮助 –

+0

在你的商店方法中,第一次检查你是否正确来临,意味着顶部只是做了'dd(\ Request :: all());' – Qazi

+0

它重复了同一页没有变化 –