【问题标题】:How to format the content received in an email in Laravel 5.4?如何在 Laravel 5.4 中格式化电子邮件中收到的内容?
【发布时间】:2018-08-26 03:18:48
【问题描述】:

我正在一个网站上工作,我想在其中格式化收到的电子邮件的内容。

此时它像这样在一行中出现,仅显示值。

Mike abc@gmail.com 9870000000 纽约 Hello World

我在 Laravel 中用于电子邮件的控制器是:

Class PostingMessageController extends Controller
{
    public function create() 
    {
        return view('posting');
    }

   public function store(Request $request)
   {

/*
    dd($request->all());

  */   
      $this->validate($request, [
      'name' => 'required',
      'email' => 'required|email',
      'number' => 'required',
      'city' => 'required',
      'post' => 'required'
      ]);

       Mail::send('emails.posting-message', [
        'msg'=> $request->name . "\r\n"
        . $request->email . "\r\n"
        . $request->number . "\r\n"
        . $request->city . "\r\n"
        . $request->post . "\r\n"


       ], function($mail) use($request) {

          $mail->from($request->email, $request->name);

           $mail->to('abc@hellworld.com')->subject('Contact Message');
       });

       return redirect()->back()->with('flash_message', 'thank you, your posting info has been sent to our team. we will reach out as soon as we can to provide next steps!');

   } 
}   


问题陈述:

我想知道我需要在控制器中进行哪些更改,以便所有内容都显示在不同的行中,如下所示左侧是字段名称,右侧是值。目前,我只看到上面提到的值。

Name        Mike

Email       abc@gmail.com

Number      9870000000

City        New York

Post        Hello World 

【问题讨论】:

    标签: php laravel email laravel-5.4 contactus


    【解决方案1】:

    如果您想修改您的电子邮件输出,您可能正在寻找可以进入刀片并设计它然后发送它的东西, 这是我的做法

    在我的路线中:routes/Web.php

    Route::get('contact-us', 'Main@showContactUs')->name('route_name');
    Route::post('contact-us', 'Main@doContactUs')->name('route_name');
    

    在我的控制器中:app/Http/Controllers/Main.php

    use Illuminate\Support\Facades\Mail;
    use App\Mail\SendMailable;
    
    class Main extends Controller
    {
        public function showContactUs()
        {
            $data = [];
            return View::make('pages.contactUs',$data);
        }
        public function doContactUs(Request $r)
        {
         $fullname = $r->get('fullName');
         $phone    = $r->get('phone');
         $email    = $r->get('email');
         $description = $r->get('message');
         Mail::to('RECEIVER_EMAIL_ADDRESS')->send(new SendMailable($fullname, $phone, $email, $description));
          if (Mail::failures())
          {
            $message1 = " Something Went Wrong.";
          }
          else
          {
            $message2 = " Message Sent Successfully.";
          }
        return redirect()->route('route_name'])->with([
                'warning' => $message1,
                'success' => $message2
            ]);
        }
    }
    

    然后创建这个:app\Mail\SendMailable.php

    <?php
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    class SendMailable extends Mailable
    {
        use Queueable, SerializesModels;
        public $fullname,$phone,$email,$description;
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct($fullname, $phone, $email,$description)
        {
            $this->fullname = $fullname;
            $this->phone = $phone;
            $this->email = $email;
            $this->description = $description;
        }
        /**
         * Build the message. THIS WILL FORMAT YOUR OUTPUT
         *
         * @return $this
         */
        public function build()
        {
            return $this->view('email.layoutOne')->subject('Contact Us Subject');
        }
    }
    

    最后在 Blade 中:resources/email/layoutOne.blade.php 你可以这样做

    <div>
        <p>Fullname  : {{ $fullname }}</p>
        <p>Phone No. : {{ $phone }}</p>
        <p>Email Address : {{ $email }}</p>
        <p>Description : {{ $description }}</p>
        <hr>
        <p>Thank you for your Query. We'll get back to you within 24 Hours. </p>
    </div>
    

    希望这会有所帮助。

    【讨论】:

    • @ViperTechPro 控制器代码似乎返回 Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file 不确定我在做什么错误。可以看看吗?
    • 当然@john 我更新了我上面的控制器部分,我忘了提到类名,我也可以看看你的控制器吗?
    • 我的控制器已发布在上述问题中,但我现在将使用您的控制器。
    • 我们还需要为控制器创建配置路由吗?
    • 我正在努力。如果我有任何问题,我会告诉你。
    【解决方案2】:
    Mail::send('emails.posting-message', [
        'msg'=> "Name\t" . $request->name . "\r\n"
        . "Email\t" . $request->email . "\r\n"
        . "Number\t" . $request->number . "\r\n"
        . "City\t" . $request->city . "\r\n"
        . "Post\t" . $request->post . "\r\n"
    
    
       ]
    

    【讨论】:

    • 所有 r 仍然直线前进。
    • Field and value pairs 应该在单独的行中。
    • 你在吗?
    • 您的模板“emails.posting-message”中有什么内容?
    • 就一行,{{ $msg }}
    【解决方案3】:

    为什么不在视图中将数据作为数组和格式传递?

    $data = array(
        'name'=> $request->name,
        'email'=> $request->email,
        'number'=> $request->number,
        'city'=> $request->city,
        'post'=> $request->post
    );
    
    Mail::send('emails.posting-message', $data, function($mail) use($request) {
        $mail->from($request->email, $request->name);
        $mail->to('letsruckify@ruckify.com', 'Name')->subject('Contact Message');
    });
    

    您可以以 $name 或 $email 的形式访问变量,并在刀片视图中实现一些表,就像@ViperTecPro 的答案中的表一样

    这是一个示例,说明如何做到这一点...具体的 html 由您决定。

    <div>
        <p>Name  : {{ $name }}</p>
        <p>Email Address :    {{ $email }}</p>
    </div>
    

    【讨论】:

    • 我使用了这个代码。我想知道我应该在email.posting-message 中使用什么。因为此时在 email.posting-message 中我使用的是{{ $msg }} this。
    • 只需使用与@ViperTecPro 回答完全相同的表格...编辑:它不是表格,但仍然是您访问的方式
    • 我想,你没有明白我的意思。 emails.posting-message 不是视图。
    • 在问题中检查我的控制器。 public function create() { return view('posting'); }
    • 这里是posting 是视图。
    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2018-02-24
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多