【问题标题】:Broken Email Template损坏的电子邮件模板
【发布时间】:2016-12-06 11:02:12
【问题描述】:

我正在为一个项目使用 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>

有人知道我的案子吗?

【问题讨论】:

    标签: php html email laravel-5


    【解决方案1】:

    不确定您是否出于特定原因这样做,但我认为问题出在此处

    <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'));
    
    });
    

    我没有测试代码,但希望你能明白。

    【讨论】:

      【解决方案2】:

      你也可以使用

      <body>
      {!!$email_content!!}
      </body>
      

      而不是

      <body>
      {{$email_content}}
      </body>
      

      为了更简单但不太安全的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 2010-09-23
        • 2019-12-20
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 2016-12-24
        相关资源
        最近更新 更多