发送电子邮件并以laravel形式获取回复

时间:2019-06-04 06:21:11

标签: laravel email

我已成功从联系表单发送邮件,现在我的要求是在提交表单时获得对用户输入的电子邮件地址的自动成功回复。请帮助我

ContactUsController

<?php

  namespace App\Http\Controllers;

  use Illuminate\Http\Request;
  use Illuminate\Support\Facades\Mail;
  use App\Mail\ContactUs;

  class ContactUsController extends Controller
  {
    function index()
    {
      return view('home/contactus');
    }

    function send(Request $request)
    {
      $this->validate($request,[
        'name' => 'required',
        'email' => 'required|email',
        'subject' => 'required',
        'message' => 'required'
      ]);

      $data = array(
                'name' => $request->name,
                'email' => $request->email,
                'subject' => $request->subject,
                'message' => $request->message
            );

      \Mail::to('xxx@mail.com')->send(new ContactUs($data));
      return back()->with('success', 'Thanks for contacting us! We will get back to you soon.');
    }   
  }

ContactUs

<?php

  namespace App\Mail;

  use Illuminate\Bus\Queueable;
  use Illuminate\Mail\Mailable;
  use Illuminate\Queue\SerializesModels;
  use Illuminate\Contracts\Queue\ShouldQueue;

  class ContactUs extends Mailable
  {
    use Queueable, SerializesModels;
    public $data;

    public function __construct($data)
    {
      $this->data = $data;
    }

    public function build()
    {
      return $this->from('xxxx@mail.com')
                  ->subject('Customer Feedback')
                  ->view('dynamic_email_template')
                  ->with('data', $this->data);
    }
  }

表格

<div class="form">

  <h4>Send us a message</h4>
  @if (count($errors) > 0)
  <div class="alert alert-danger">
    <button type="button" class="close" data- dismiss="alert">×</button>
    <ul>
      @foreach ($errors->all() as $error)
      <li>{{ $error }}</li>
      @endforeach
    </ul>
  </div>
  @endif 
  @if ($message = Session::get('success'))
  <div class="alert alert-success alert-block">
    <button type="button" class="close" data- dismiss="alert">×</button>
    <strong>{{ $message }}</strong>
  </div>
  @endif

  <form method="post" action="{{url('contactus/send')}}" autocomplete="off">
    {{ csrf_field() }}
    <div class="form-group">
      <input type="text" name="name" for="name" class="form-control" id="name" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
      <div class="validation"></div>
    </div>
    <div class="form-group">
      <input type="email" class="form-control" name="email" for="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
      <div class="validation"></div>
    </div>
    <div class="form-group">
      <input type="text" class="form-control" name="subject" for="subject" id="subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
      <div class="validation"></div>
    </div>
    <div class="form-group">
      <textarea class="form-control" name="message" for="message" rows="5" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
      <div class="validation"></div>
    </div>

    <div class="text-center">
      <button type="submit" name="send" title="Send Message">Send Message</button>
    </div>
  </form>
</div>

dynamic_email_template

<p>Hi, This is {{ $data['name'] }} "{{ $data['email'] }}"</p> </br>

<p>{{ $data['subject'] }}</p> </br>
<p>I have some query like "{{ $data['message'] }}".</p> </br>
<p>It would be appriciative, if you gone through this feedback.</p>

1 个答案:

答案 0 :(得分:3)

您需要创建与查看文件相同的电子邮件模板,假设contact_us_email.blade.php。在此文件中添加此内容

contact_us_email.blade.php

<html>
    <body>
        <h2>Hi, This is {{ $data['name'] }} "{{ $data['email'] }}"</h2><br>
        <p>Subject: {{ $data['subject'] }}</p> <br>
        <p>I have some query like <b>"{{ $data['message'] }}"</b>. <br>
        <p>It would be appriciative, if you gone through this feedback.</p>
    </body>
</html>

注意:根据需要添加CSS或样式。这是基本的html

Edit: To send confirmation email to user

要向用户确认成功,您可以创建另一个电子邮件模板,例如 contact_us_thank_you_email.blade.php

<html>
    <body>
        <h2>Hello, {{ $data['name'] }} "{{ $data['email'] }}"</h2><br>
        <p>Thank You for your interest...blah blah blah</p> <br>
        <p>Our team will contact you soon</p> <br>
    </body>
</html>

现在在您的ContactUsController中,替换

\Mail::to('xxx@mail.com')->send(new ContactUs($data));

使用

Mail::send('contact_us_email', $data, function ($message) use ($data) {
    $message->from('xxx@mail.com', 'xxx');
    $message->to('xxx@mail.com')->subject($data['subject']);
});

Mail::send('contact_us_thank_you_email', $data, function ($message) use ($data) {
    $message->from('xxx@mail.com', 'xxx');
    $message->to($data['email'])->subject('Thank you for the interest');
});

我认为您很好。我希望这就是您要的。