【发布时间】:2018-07-02 02:33:23
【问题描述】:
我在 Laravel 中有一个联系表格,它发送 2 封电子邮件 - 一封确认电子邮件给用户,然后给发件人。
我没有收到任何错误,并且在我的网络选项卡中显示 POST 状态但没有状态代码。当我点击发送时页面刚刚刷新。如果有人可以看看并提出一些建议,那么我就可以得到一个错误来处理一些事情。
这是我的 HTML:
<div id="contact">
<form class="form-horizontal" id="contactForm" role="form">
{{ csrf_field() }}
@if(Auth::guest())
<div class="form-group">
<label for="exampleInputName2">Name</label>
<input type="text" class="form-control" id="name" placeholder="Jane Doe" name="name">
</div>
<div class="form-group">
<label for="exampleInputEmail2">Email</label>
<input type="email" class="form-control" id="email" placeholder="jane.doe@example.com" name="email">
</div>
@else
<div class="form-group">
<label for="exampleInputName2">Name</label>
<input type="text" class="form-control" id="name" value="{{ Auth::user()->getFullName() }}" name="name">
</div>
<div class="form-group">
<label for="exampleInputEmail2">Email</label>
<input type="email" class="form-control" id="email" value="{{ Auth::user()->email }}" name="email">
</div>
@endif
<div class="form-group ">
<label for="exampleInputText">Your Message</label>
<textarea id="message" name="message" class="form-control" placeholder="Description"></textarea>
</div>
<button type="submit" class="btn btn-default" v-on:click="submitMessage">Send Message</button>
</form>
</div>
我的 Ajax 调用(使用 Vue.js):
var contact = new Vue({
el: '#contact',
data: {
},
methods: {
submitMessage: function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr("content")
}
});
$.ajax({
url: '/pages/contact/sendMessage',
type: 'POST',
data: $("#contactForm").serialize(),
success: function(response){
toastr.success(response.response);
},
error: function(error){
toastr.success(error.error);
}
});
}
}
});
我的路线:
Route::post('/pages/contact/sendMessage', 'ContactController@sendMessage');
我的控制器:
public function sendMessage(Request $request){
$this->validate($request, [
'name' => 'required',
'email' => 'required',
'message' => 'required'
]);
$users = User::all();
$emails = collect($users)->pluck('email')->all();
if(Auth::user()){
$user = Auth::user()->getFullName();
$email = Auth::user()->email;
}else{
$user = $request->input('name');
$email = $request->input('email');
}
$message = $request->input('message');
Mail::to($emails)->send(new Contact($user, $email, $message));
Mail::to($email)->send(new ContactConfirm($user, $email, $message));
$response = [
'response' => 'Email Successfully Sent',
'error' => 'Something went wrong'
];
return response()->json($response);
}
我的邮件:
public $title;
public $introLines;
public $outroLines;
public $actionText;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($user, $email, $message)
{
$this->title = 'Contact from' . ' ' . $user;
$this->$introLines = ['The following user has issued a message'];
$this->$outroLines = ['User: ' . $user, 'Email: ' . $email, 'Message: ' . $message];
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.template');
}
我的 .env:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=email@gmail.com
MAIL_PASSWORD='app password'
MAIL_ENCRYPTION=tls
我还更新了我的config/mail.php 以获得与上述相同的信息。在 .env 更改后,我确实多次停止并启动了我的服务。
【问题讨论】:
-
您的日志文件中是否有一些信息位于
storage/logs -
[2018-01-23 10:47:35] local.ERROR: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed {"userId":1,"email":"myemail@gmail.com","exception":"[object] (ErrorException(code: 0): stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed at C:\\xampp\\htdocs\\laravel\\vendor\\swiftmailer\\swiftmailer\\lib\\classes\\Swift\\Transport\\StreamBuffer.php:94) -
这是日志中的最后一项,但我现在再次测试,日志中没有任何新错误
标签: php ajax laravel email vue.js