2017-09-15 166 views
1

单击联系人窗体中的发送按钮时出现错误。我正在使用Laravel 5.4。请帮我解决这个错误。联系表单Laravel 5.4电子邮件错误

我已经清除高速缓存,但仍然收到此错误... PHP工匠配置:缓存

预期的响应代码250,但得到的代码“530”,与消息“530-5.5.1需要进行身份验证

这里是我的邮件功能...

public function getContactUsForm(){ 
     $data = Input::all(); 
     $rules = array (
      'fullname' => 'Required', 
      'email' => 'Required|Email', 
      'subject' => 'Required', 
      'message' => 'Required' 
     ); 

     $validator = Validator::make ($data, $rules); 
     if ($validator -> passes()){ 

      Mail::send('contactmail', $data, function($message) use ($data) 
      { 
       $message->from($data['email'] , $data['fullname']); 
       $message->to('myemail', 'myname')->subject('Contact Request'); 

      }); 
      Session::put('flash_message', 'Thank you for contacting us – we will get back to you soon!'); 
      return redirect()->back(); 
     }else{ 
      return Redirect::to('/contactus')->withErrors($validator); 
     } 
    } 

这是我mail.php文件

<?php 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Mail Driver 
    |-------------------------------------------------------------------------- 
    | 
    | Laravel supports both SMTP and PHP's "mail" function as drivers for the 
    | sending of e-mail. You may specify which one you're using throughout 
    | your application here. By default, Laravel is setup for SMTP mail. 
    | 
    | Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses", 
    |   "sparkpost", "log", "array" 
    | 
    */ 

    'driver' => env('MAIL_DRIVER', 'smtp'), 

    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Host Address 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may provide the host address of the SMTP server used by your 
    | applications. A default option is provided that is compatible with 
    | the Mailgun mail service which will provide reliable deliveries. 
    | 
    */ 

    'host' => env('MAIL_HOST', 'smtp.gmail.com'), 

    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Host Port 
    |-------------------------------------------------------------------------- 
    | 
    | This is the SMTP port used by your application to deliver e-mails to 
    | users of the application. Like the host we have set this value to 
    | stay compatible with the Mailgun e-mail application by default. 
    | 
    */ 

    'port' => env('MAIL_PORT', 587), 

    /* 
    |-------------------------------------------------------------------------- 
    | Global "From" Address 
    |-------------------------------------------------------------------------- 
    | 
    | You may wish for all e-mails sent by your application to be sent from 
    | the same address. Here, you may specify a name and address that is 
    | used globally for all e-mails that are sent by your application. 
    | 
    */ 

    'from' => [ 
     'address' => env('MAIL_FROM_ADDRESS', 'myemail'), 
     'name' => env('MAIL_FROM_NAME', 'sendername'), 
    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | E-Mail Encryption Protocol 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may specify the encryption protocol that should be used when 
    | the application send e-mail messages. A sensible default using the 
    | transport layer security protocol should provide great security. 
    | 
    */ 

    'encryption' => env('MAIL_ENCRYPTION', 'tls'), 

    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Server Username 
    |-------------------------------------------------------------------------- 
    | 
    | If your SMTP server requires a username for authentication, you should 
    | set it here. This will get used to authenticate with your server on 
    | connection. You may also set the "password" value below this one. 
    | 
    */ 

    'username' => env('myemail'), 

    'password' => env('********'), 

    /* 
    |-------------------------------------------------------------------------- 
    | Sendmail System Path 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "sendmail" driver to send e-mails, we will need to know 
    | the path to where Sendmail lives on this server. A default path has 
    | been provided here, which will work well on most of your systems. 
    | 
    */ 

    'sendmail' => '/usr/sbin/sendmail -bs', 

    /* 
    |-------------------------------------------------------------------------- 
    | Markdown Mail Settings 
    |-------------------------------------------------------------------------- 
    | 
    | If you are using Markdown based email rendering, you may configure your 
    | theme and component paths here, allowing you to customize the design 
    | of the emails. Or, you may simply stick with the Laravel defaults! 
    | 
    */ 

    'markdown' => [ 
     'theme' => 'default', 

     'paths' => [ 
      resource_path('views/vendor/mail'), 
     ], 
    ], 

]; 
+1

这是因为您试图从本地主机发送电子邮件。 –

+0

我认为这不是一个问题...我之前已经完成了本地主机上的邮件测试。 – ma123456

+0

与laravel?或与另一个框架? –

回答

0

您是否在.env文件中设置了您的电子邮件提供商?

更改session::putsession::flash

更新:

试试这个在您的功能

public function postcontactus(Request $request) { 
      $this->validate($request, array(
      'fullname' => 'Required', 
      'email' => 'Required|Email', 
      'subject' => 'Required', 
      'messagetext' => 'Required' 
     )); 

      $data = array(
      'fullname' => $request->fullname, 
      'email' => $request->email, 
      'subject' => $request->subject, 
      'messagetext' => $request->messagetext, 
     ); 

      Mail::send('contactmail', $data, function($message) use ($data) { 
      $message->from($data['email']); 
      $message->to('Your Email'); 
      $message->subject($data['subject']); 
      }); 
Session::put('flash_message', 'Thank you for contacting us – we will get back to you soon!'); 
     return redirect()->back(); 

    } 

注意:您正在使用message传递这是不允许的电子邮件用户信息因为使用消息方法laravel本身,您应该使用其他名称,例如我使用的messagetext或您喜欢的任何其他名称。

而且改变它在刀片:

.env
{{Form::label('messagetext', 'Message')}} 
{{Form::textarea('messagetext', null, ['class'=>'form-control'])}} 

文件设置:

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=465 
[email protected] 
MAIL_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
MAIL_ENCRYPTION=ssl 

让我知道,如果它的工作原理。

+0

我正在使用mailtrap,并给出了.env中的电子邮件提供商,但我仍然收到错误 – ma123456

+0

这是我的错误 预期的响应代码250但代码为“530”,并带有消息“ 530-5.5.1需要身份验证。了解更多信息,请参阅530 5.5.1 https://support.google.com/mail/?p=WantAuthError f13sm2020065pfj.127 - gsmtp – ma123456

+0

@ ma123456我更新了我的答案。 – mafortis