Laravel 5 и PHPMailer

Есть ли у кого-нибудь рабочий пример, как я могу работать с PHPMailer в Laravel 5? В Laravel 4 это было тихо, просто использовать, но тот же метод не работает в L5. Вот что я сделал в L4:

Добавлено в 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. Есть идеи? Спасибо!

Ответ 1

Ну, есть несколько ошибок, которые я думаю... Это рабочий пример отправки почты с PhpMailer в Laravel 5. Просто протестируйте ее.

        $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');

И, конечно же, вам нужно сделать обновление для композитора после добавления параметра к composer.json

Однако, я бы предпочел, чтобы laravel был встроен в SwiftMailer. http://laravel.com/docs/5.0/mail

Ответ 2

Шаг1: откройте командную строку и выполните следующую команду

composer require phpmailer/phpmailer

Шаг 2: добавьте следующие данные в свой контроллер или где вы хотите использовать почтовую функцию

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/

Ответ 3

В Laravel 5.5 или выше вам нужно выполнить следующие шаги.

Установите PHPMailer в ваше приложение laravel.

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';
        }
    }
}