Laravel - 调用未定义的方法Swift_SmtpTransport :: newInstance()

时间:2017-11-05 07:42:07

标签: php laravel laravel-5

我正在使用Swiftmailer发送电子邮件。我安装了 +“guzzlehttp / guzzle”:“^ 6.3” +“swiftmailer / swiftmailer”:“^ 6.0”。

我为它创建控制器和路由。但它有问题“调用未定义的方法Swift_SmtpTransport :: newInstance()”。请检查我的代码并指导我如何解决它?非常感谢

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Swift_Mailer;
use Swift_MailTransport;
use Swift_Message;
class EmailController extends Controller
{
    public function sendEmail(){
        // Configuration
        $smtpAddress = 'smtp.zoho.com';
        $port = 465;
        $encryption = 'ssl';
        $yourEmail = 'ptc@gmail.com';
        $yourPassword = '********';

        // Prepare transport
        $transport = \Swift_SmtpTransport::newInstance($smtpAddress, $port, $encryption)
                ->setUsername($yourEmail)
                ->setPassword($yourPassword);
        $mailer = \Swift_Mailer::newInstance($transport);

        // Prepare content 
        $view = View::make('email_template', [
            'message' => '<h1>Hello World !</h1>'
        ]);

        $html = $view->render();

        // Send email
        $message = \Swift_Message::newInstance('Test')
             ->setFrom(['ptc@gmail.com' => 'Our Code World'])
             ->setTo(["hik@gmail.com" => "mail@mail.com"])
             // If you want plain text instead, remove the second paramter of setBody
             ->setBody($html, 'text/html');

        if($mailer->send($message)){
            echo "Check your inbox";
        }

        echo "Something went wrong :(";
    }
}

2 个答案:

答案 0 :(得分:1)

在GitHub问题中找到,对于SwiftMailer&#34; ^ 6.0&#34;

  

:: newInstance()方法已被弃用   Swift_MailTransport。

尝试改变:

\Swift_SmtpTransport::newInstance() 
\Swift_Mailer::newInstance()

为:

new \Swift_SmtpTransport();
new \Swift_Mailer()

有关以下内容的更多信息:

答案 1 :(得分:0)

不要过于复杂化。

你正在重写与laravel捆绑在一起的东西。

https://laravel.com/docs/5.5/mail

无需自己设置swiftmailer,只需使用laravel类并设置smtp凭据

config/mail.php

它可以像

一样简单
Mail::raw('Text to e-mail', function($message)
{
    $message->from('us@example.com', 'Laravel');

    $message->to('foo@example.com')->cc('bar@example.com');
});

或者你可以想象并使用视图制作你的模板。

Mail::send('emails.welcome', $data, function($message)
{
    $message->from('us@example.com', 'Laravel');

    $message->to('foo@example.com')->cc('bar@example.com');

    $message->attach($pathToFile);
});