2015-10-29 66 views
1

我試圖在laravel 5.1發送電子郵件,但得到以下錯誤:Laravel 5.1發送電子郵件顯示錯誤

Class 'Swift_Transport_EsmtpTransport' not found 

我的代碼:

public function test_mail() { 
    $data = ['name' => 'XXX xxx xxx', 'number' => 1234]; 
    $sent = Mail::send('emails.fee_pay_success', ['data' => $data], function ($m) use ($data) { 
     $m->to('[email protected]', 'Abcd Efg')->subject('Your Reminder!'); 
    }); 
if(! $sent) dd("something wrong"); 
dd("send"); 
} 

我的配置文件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", "mail", "sendmail", "mailgun", "mandrill", "ses", "log" 
    | 
    */ 

    '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' => '', 

    /* 
    |-------------------------------------------------------------------------- 
    | 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), 
    'port' =>465, 

    /* 
    |-------------------------------------------------------------------------- 
    | 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' => '[email protected]', 'name' => 'DU'], 

    /* 
    |-------------------------------------------------------------------------- 
    | 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'), 
    'encryption' => 'ssl', 

    /* 
    |-------------------------------------------------------------------------- 
    | 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' => '', 

    /* 
    |-------------------------------------------------------------------------- 
    | SMTP Server Password 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may set the password required by your SMTP server to send out 
    | messages from your application. This will be given to the server on 
    | connection so that the application will be able to send messages. 
    | 
    */ 

    'password' =>'', 

    /* 
    |-------------------------------------------------------------------------- 
    | 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', 

    /* 
    |-------------------------------------------------------------------------- 
    | Mail "Pretend" 
    |-------------------------------------------------------------------------- 
    | 
    | When this option is enabled, e-mail will not actually be sent over the 
    | web and will instead be written to your application's logs files so 
    | you may inspect the message. This is great for local development. 
    | 
    */ 

    'pretend' => false, 

]; 
+0

檢查您的smtp服務器。它在您的機器上安裝/運行? – manix

回答

0

您在Mail門面忘了\

$sent = \Mail::send('emails.fee_pay_success', ['data' => $data], function ($m) use ($data) { 

因爲在您的配置文件中使用smtp服務器,看起來您的機器沒有smtp服務器來處理電子郵件服務器。嘗試下載FakeSMTP server,它是一個小型的jar文件,它將模擬一個用於debbuging目的的smtp服務器。

+1

我不認爲你在使用Facades時需要反斜槓。 – Muhammet

+0

是的,你需要。當你在用命名空間聲明的類內部使用外觀時,默認情況下,php會嘗試從相同控制器所屬的命名空間加載外觀作爲類成員。 – manix

+0

「所有外牆都存在於全局命名空間中」 - 這就是爲什麼您需要放置反斜槓。或者,如果你想進行不必要的導入,那麼請使用Mail;'這個人忘了符號 – manix