我正在为项目使用laravel 5框架,它具有用户可以构建电子邮件消息的功能。但是当我在我的电子邮件中测试它时,我得到了html标签。
<p> <small>Julius Cesar</small></p><p><small>Julius</small></p><p><small> Cesar<br></small></p><p><small>tester@mail.com </small> <br></p>
用户从电子邮件收到的预期输出应为:
Julius Cesar
Julius
Cesar
tester@mail.com
我不知道为什么会这样。这是我在laravel中的代码。
这是为了显示表单的视图:eblast-form.blade.php
<form action=" {{ url( 'app/esetting/emailblast' ) }} " id="eblast-form" method="post">
{{ csrf_field() }}
<div class="box-body">
<div class="form-group {{ $errors->has( 'subject' ) ? 'has-error' : '' }}">
<label for="subject" class="control-label col-sm-2">Subject</label>
<div class="col-sm-10">
<input type="text" name="subject" class="form-control" id="subject" placeholder="Subject" value="{{ old('subject') }}" required="required" />
</div>
</div>
<br><br>
<div class="form-group {{ $errors->has( 'message' ) ? 'has-error' : '' }}">
<label for="message" class="control-label">Email Message Content</label>
<div class="col-sm-12">
<textarea class="form-control" name="message-cont" id="message" required>
{{ old('message') }}
</textarea>
<p><small> [fullname] [first_name] [last_name] [email] </small></p>
<input type="hidden" id="msg" name="message" value="">
</div>
</div>
</div>
<br>
<br>
<div class="box-footer">
<div class=" pull-right">
<button type="submit" class="btn btn-info " id="send-mail">Send</button>
</div>
</div>
</form>
这是我的控制器发送电子邮件的方法:
public function postEmailblast(Request $request)
{
....
$user = Auth::user();
$message = $request->input('message');
$m_user = User::find($egm->user_id);
$rep_this = array(
"[fullname]",
"[first_name]",
"[last_name]",
"[email]"
);
$rep_with = array(
$m_user->common_name,
$m_user->first_name,
$m_user->last_name,
$m_user->email
);
$data = array(
'email_content' => str_replace($rep_this, $rep_with, $message),
);
Mail::send('emails.e-blast', $data, function ($message) use ($request, $user, $m_user) {
$message->from($user->email, $user->common_name)->to($m_user->email, $m_user->common_name)->subject($request->input('subject'));
});
....
}
这是emails.e-blast
/ emails.e-blast.blade.php
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>
{{$email_content}}
</body>
</html>
有没有人对我的案子有所了解?
答案 0 :(得分:1)
您也可以使用
<body>
{!!$email_content!!}
</body>
而不是
<body>
{{$email_content}}
</body>
对于更简单但不太安全的解决方案。
答案 1 :(得分:0)
不确定您是否因特定原因而这样做,但我认为问题出在这里
<body>
{{$email_content}}
</body>
您应该使用刀片模板构建邮件,而不仅仅是接收内容,而不是粘贴电子邮件内容(顺便说一句,您已将其转义)。因此,请将其用作emails.e-blast.blade.php
...
<body>
<p><small>{{$common_name}}</small></p>
<p><small>{{$first_name}}</small></p>
<p><small> {{$last_name}}</small></p>
<p><small>{{$email}} </small></p>
</body>
...
现在,您在发送邮件时将这些变量传递到$ data中
$data = array(
'common_name' => "Julius Caesar"
'first_name' => "Julius",
'last_name' => "Caesar",
'email' => "test@example.com"
);
Mail::send('emails.e-blast', $data, function ($message) use ($request, $data, $m_user) {
$message->from($data->email, $data->common_name)->to($m_user->email, $m_user->common_name)->subject($request->input('subject'));
});
我没有测试代码,但我希望你明白这个想法。