2015-04-07 117 views
10

有沒有人有一個工作示例,我如何在Laravel 5中使用PHPMailer?在Laravel 4中,使用簡單,但在L5中不起作用。這是我在做L4:Laravel 5和PHPMailer

添加在composer.json

"phpmailer/phpmailer": "dev-master", 

而在controller我用這樣的:

$mail = new PHPMailer(true); 
try { 
    $mail->SMTPAuth(...); 
    $mail->SMTPSecure(...); 
    $mail->Host(...); 
    $mail->port(...); 

    . 
    . 
    . 

    $mail->MsgHTML($body); 
    $mail->Send(); 
} catch (phpmailerException $e) { 
    . 
    . 
} catch (Exception $e) { 
    . 
    . 
} 

但它不工作, L5。任何想法?謝謝!

+0

定義「不起作用」。任何具體的錯誤,例外,什麼? –

+0

爲什麼你想首先使用PHPMailer? Laravel具有很好的內置SwiftMailer實現。 –

+0

是的,我會使用它,但它是一個遺留代碼,我必須在第一階段從4.2升級到5。之後我會將其轉換爲SwiftMailer。 –

回答

9

那麼我認爲有多個錯誤... 這是一個在Laravel 5中使用PhpMailer發送郵件的工作示例。只是對它進行了測試。

 $mail = new \PHPMailer(true); // notice the \ you have to use root namespace here 
    try { 
     $mail->isSMTP(); // tell to use smtp 
     $mail->CharSet = "utf-8"; // set charset to utf8 
     $mail->SMTPAuth = true; // use smpt auth 
     $mail->SMTPSecure = "tls"; // or ssl 
     $mail->Host = "yourmailhost"; 
     $mail->Port = 2525; // most likely something different for you. This is the mailtrap.io port i use for testing. 
     $mail->Username = "username"; 
     $mail->Password = "password"; 
     $mail->setFrom("[email protected]", "Firstname Lastname"); 
     $mail->Subject = "Test"; 
     $mail->MsgHTML("This is a test"); 
     $mail->addAddress("[email protected]", "Recipient Name"); 
     $mail->send(); 
    } catch (phpmailerException $e) { 
     dd($e); 
    } catch (Exception $e) { 
     dd($e); 
    } 
    die('success'); 

和當然,你需要添加depency到composer.json

但是之後做了作曲家的更新,我寧願建於SwiftMailer的laravel。 http://laravel.com/docs/5.0/mail

+0

正如我所看到的,除了* @ +%之外,我的示例完全一樣! root namespace backslash char ... :)我的眼睛只是略過了這一點,我不知道爲什麼... :(所以,謝謝,它現在正在工作。是的,我會將代碼更改爲Laravel的內置郵件,但它是一個遺留代碼,首先我必須從4.2升級到5,然後我會做一些改進。再次感謝! –

+0

當我說多個錯誤,我認爲你使用的東西像$ mail-> Host =「yourmailhost 「;不是作爲一個任務,而是作爲函數$ mail-> Host(」yourmailhost「);但我明白,你只是想指出你通常做了什麼,我不應該把它看作正確的語法。很高興幫助你;) –

+0

任何人都可以回答,我怎樣才能在相同的設置中使用NONSSL? 未使用ssl laravel會給出錯誤,而我沒有使用SSL憑證 –

4

第一步:打開命令提示符,運行以下命令

composer require phpmailer/phpmailer 

第二步:在您的控制器添加以下或者要使用郵件功能

use PHPMailerAutoload; 
use PHPMailer; 

第3步:使用以下代碼發送郵件

$mail = new PHPMailer; 

// notice the \ you have to use root namespace here 
try { 
$mail->isSMTP(); // tell to use smtp 
$mail->CharSet = 「utf-8」; // set charset to utf8 
$mail->Host = $_SERVER[‘MAIL_HOST_NAME’]; 
$mail->SMTPAuth = false; 
$mail->SMTPSecure = false; 
$mail->Port = 25; // most likely something different for you. This is the mailtrap.io port i use for testing. 
$mail->Username = 「」; 
$mail->Password = 「」; 
$mail->setFrom(「[email protected]」, 「examle Team」); 
$mail->Subject = 「examle」; 
$mail->MsgHTML(「This is a test new test」); 
$mail->addAddress(「[email protected]」, 「admin」); 
$mail->addAddress(「[email protected]」, 「test」); 
$mail->addReplyTo(‘[email protected]’, ‘Information’); 
$mail->addBCC(‘[email protected]’); 
$mail->addAttachment(‘/home/kundan/Desktop/abc.doc’, ‘abc.doc’); // Optional name 
$mail->SMTPOptions= array(
‘ssl’ => array(
‘verify_peer’ => false, 
‘verify_peer_name’ => false, 
‘allow_self_signed’ => true 
) 
); 

$mail->send(); 
} catch (phpmailerException $e) { 
dd($e); 
} catch (Exception $e) { 
dd($e); 
} 
dd(‘success’); 

更多信息:點擊這裏查看:http://programmerlab.com/question/how-to-use-phpmailer-in-laravel/

+0

你甚至沒有嘗試改變我的PHP評論.... –

0

在Laravel 5.5或以上版本,你需要做以下步驟

您laravel應用程序安裝的PHPMailer的。

composer require phpmailer/phpmailer 

然後轉到您想要使用phpmailer的控制器。

<?php 
namespace App\Http\Controllers; 

use PHPMailer\PHPMailer; 

class testPHPMailer extends Controller 
{ 
    public function index() 
    { 
     $text    = 'Hello Mail'; 
     $mail    = new PHPMailer\PHPMailer(); // create a n 
     $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
     $mail->SMTPAuth = true; // authentication enabled 
     $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail 
     $mail->Host  = "smtp.gmail.com"; 
     $mail->Port  = 465; // or 587 
     $mail->IsHTML(true); 
     $mail->Username = "[email protected]"; 
     $mail->Password = "testpass"; 
     $mail->SetFrom("[email protected]", 'Sender Name'); 
     $mail->Subject = "Test Subject"; 
     $mail->Body = $text; 
     $mail->AddAddress("[email protected]", "Receiver Name"); 
     if ($mail->Send()) { 
      return 'Email Sended Successfully'; 
     } else { 
      return 'Failed to Send Email'; 
     } 
    } 
}