如何使用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
而我删除名称和密码的问题 当我按下发送给我'禁止'作为一条消息。 任何人都可以帮忙吗?
与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" ........
我已经做到了,并没有帮助 –
在你的商店方法中,第一次检查你是否正确来临,意味着顶部只是做了'dd(\ Request :: all());' – Qazi
它重复了同一页没有变化 –
您是否在Laravel中配置了您的电子邮件服务? –
@ maytham-ɯɐɥʇʎɐɯ是我配置了它,我将编辑问题添加它 –
@ maytham-ɯɐɥʇʎɐɯ我使用smtp –