我试图发送电子邮件,但我不能再移动这是我的观点:
<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('mohamedsasa201042@yahoo.com');
$message->to('elbiheiry2@gmail.com', 'elbiheiry')->subject('TODOParrot Feedback');
});
return \Redirect::route('contact')
->with('message', 'Thanks for contacting us!');
}
}
这就是我的路线:
Route::get('contact',
['as' => 'contact', 'uses' => 'AboutController@create']);
Route::post('contact',
['as' => 'contact', 'uses' => 'AboutController@store']);
这就是.env文件中的配置:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=ssl
我删除了问题中的名称和密码 当我按下发送时,它给了我'禁止'&#39;作为一条消息。 有人可以帮忙吗?
答案 0 :(得分:1)
与OP聊天后,这是答案。
主要问题:
您的ContactFormRequest.php
具有以下规则功能:
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
];
}
但是您的表单没有名称和消息,因此您需要删除不存在的元素或在需要时修改它们,为了我的测试目的,我只保留了电子邮件:
public function rules()
{
return [
'Email' => 'required|email',
];
}
保持名称惯例是一种很好的做法,例如,如果您使用大写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');
});
它应该有效,
我只使用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>
这只是示例,但您可以进一步修改它。
答案 1 :(得分:0)
根据我的理解,我认为您遗失authorize
部分ContactFormRequest
转到此App/Http/Request/ContactFormRequest
,您将使用此方法
public function authorize()
{
return false;
}
所以只需将return设为true即可。它将允许进一步的过程。
public function authorize()
{
return true;
}
<强>被修改强>
将您的Contact POST Route
更改为此
Route::post('contact/store',['as' => 'contact-store', 'uses' => 'AboutController@store']);
并在您的表单操作中,只需更改此内容。
<form action="contact/store" ........
答案 2 :(得分:0)
MAIL_DRIVER=sendmail
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
我遇到了类似的问题,并从smtp更改了MAIL_DRIVER = sendmail
答案 3 :(得分:0)
Laravel 应用
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>
MAIL_ENCRYPTION= ssl
在您的控制器设置中
面对
use Illuminate\Support\Facades\Mail;
发送邮件
$to_name = "RECEIVER_NAME";
$to_email = "tomail@gmail.com";
$data = array("name"=>"Cloudways (sender_name)", "body" => "A test mail");
Mail::send([], $data, function($message) use ($to_name, $to_email) {
$message->to($to_email, $to_name)
->subject("Laravel Test Mail");
$message->from("preealweb@gmail.com","Test Mail");
});
注意:从邮件到邮件
确保 在 Gmail 设置中启用 SucureLess 邮件