Php 使用laravel将一个合成文本发送到保存在数据库中的电子邮件
我已经创建了一个表单,在提交后它将转到电子邮件id,该id存储在Laravels邮件功能中。但我想向多个电子邮件id存储在数据库中的人发送相同的电子邮件。这是我的密码: 路线:Php 使用laravel将一个合成文本发送到保存在数据库中的电子邮件,php,email,laravel-5,Php,Email,Laravel 5,我已经创建了一个表单,在提交后它将转到电子邮件id,该id存储在Laravels邮件功能中。但我想向多个电子邮件id存储在数据库中的人发送相同的电子邮件。这是我的密码: 路线: Route::get('contactform', 'ClientsController@display1'); Route::post('contactform', 'ClientsController@contact'); Route::post('contactform', 'ClientsController@
Route::get('contactform', 'ClientsController@display1');
Route::post('contactform', 'ClientsController@contact');
Route::post('contactform', 'ClientsController@showForm');
Route::get('/', 'ClientsController@profile');
我的控制器:
public function display(){
$data = Input::get('agree');
$count = count ($data);
if($count){
return $this->contact( $data,$count);
}
else{
echo "Select At least one email-id.";
return view('clientinfo.backtoprev');
}
}
public function display1(){
return view('contactform');
}
public function contact($data,$count){
$input = Input::only('name', 'email', 'msg');
$validator = Validator::make($input,
array(
'name' => 'required',
'email' => 'required|email',
'msg' => 'required',
)
);
if ($validator->fails())
{
return Redirect::to('contact')->with('errors', $validator->messages());
} else {
Mail::send('contactemail', $input, function($message) use($data)
{
$message->from('your@email.address', 'Your Name');
$message->to( $data);
});
return view('clientinfo.display', compact('data','count'));
}
}
这是我的意见表
{!! Form::open(array('action' => 'ClientsController@contact','method' => 'post','name'=>'f1' , 'id'=>'form_id'))!!}
@if(Session::has('errors'))
<div class="alert alert-warning">
@foreach(Session::get('errors')->all() as $error_message)
<p>{{ $error_message }}</p>
@endforeach
</div>
@endif
//My fields, name & message
{!! Form::close() !!}
从display方法中,我将两个变量$data和$count传递给contact方法,但在填写表单并点击submit之后,出现如下错误
App\Http\Controllers\ClientsController::contact缺少参数1原因:您没有在Mail::函数中传递两个参数
你应该做什么:
在Mail::中,您应该像这样传递这两个参数
Mail::send('contactemail', $input, function($message) use($data, $input)
更新:你应该试试这个,这会比你试图触发电子邮件的那个更好
Mail::send([], array('UserName' => $UserName, 'Email' => $Email), function($message) use ($UserName, $Email) {
$MailBody = 'Hi'.$UserName.'<br>Your HTML Content';
$message->setBody($MailBody, 'text/html');
$message->to($Email);
$message->subject('Subject of Email');
});
以下是对我的问题的更正 我使用了一个控制器而不是两个:
public function showForm(Request $request )
{
//Get Content From The Form
$name = $request->input('name');
$email = Input::get('agree');
$message = $request->input('message');
//Make a Data Array
$data = array(
'name' => $name,
'email' => $email,
'message' => $message
);
//Convert the view into a string
$emailView = View::make('contactemail')->with('data', $data);
$contents = (string) $emailView;
//Store the content on a file with .blad.php extension in the view/email folder
$myfile = fopen("../resources/views/emails/email.blade.php", "w") or die("Unable to open file!");
fwrite($myfile, $contents);
fclose($myfile);
//Use the create file as view for Mail function and send the email
Mail::send('emails.email', $data, function($message) use ($data) {
$message->to( $data['email'], 'Engage')->from('stifan@xyz.com')->subject('A Very Warm Welcome');
});
// return view();
}
路线:
Route::get('contactform', 'ClientsController@display1');
Route::post('contactform', 'ClientsController@contact');
Route::post('contactform', 'ClientsController@showForm');
Route::get('/', 'ClientsController@profile');
查看联系人电子邮件包含要发送的数据,查看我们通过邮件功能发送的电子邮件。当用户将数据放入表单中时,由于以下代码行,该数据将保存在email.blade.php中:
//Convert the view into a string
$emailView = View::make('contactemail')->with('data', $data);
$contents = (string) $emailView;
//Store the content on a file with .blad.php extension in the view/email folder
$myfile = fopen("../resources/views/emails/email.blade.php", "w") or die("Unable to open file!");
fwrite($myfile, $contents);
fclose($myfile);
是否可以尝试在Mail::函数中发送输入和其他参数,而不是将其作为参数发送。。我的意思是硬编码?硬编码后我只能给一个人发送电子邮件,当我第一次尝试时,我只为一个人发送,然后我尝试发送邮件到数组硬编码,但同样的错误。然后我传递了变量,正如我上面解释的。你所说的邮件到数组硬编码是什么意思。对不起,我不明白。。你的意思是你试图在foreach循环中运行邮件功能?我已经更新了我的答案。您应该修改并使用,这将是更好的解决方案;