2017-09-15 163 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