我正在使用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 :(";
}
}
答案 0 :(得分:1)
在GitHub问题中找到,对于SwiftMailer&#34; ^ 6.0&#34;
:: newInstance()方法已被弃用 Swift_MailTransport。
尝试改变:
\Swift_SmtpTransport::newInstance()
\Swift_Mailer::newInstance()
为:
new \Swift_SmtpTransport();
new \Swift_Mailer()
有关以下内容的更多信息:
GitHub issue
^ 6版本的文档,阅读Basic Usage
答案 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);
});