web-dev-qa-db-ja.com

Swiftmailer-キャッチされないエラー:未定義のメソッドSwift_SmtpTransport :: newInstance()の呼び出し

Swiftmailerを使用してメールを送信しようとしています。

キャッチされないエラーが発生します:

未定義のメソッドSwift_SmtpTransport :: newInstance()を呼び出します。

これがコードです:

require_once 'Swift/lib/Swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
      ->setUsername ('[email protected]')
      ->setPassword ('password');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Weekly Hours')
       ->setFrom (array('[email protected]' => 'My Name'))
       ->setTo (array('[email protected]' => 'Recipient'))
       ->setSubject ('Weekly Hours')
       ->setBody ('Test Message', 'text/html');

$result = $mailer->send($message);

上記のコードに基づいて、その間違いの原因は何ですか?

11
K Davis

私はSwiftMailerについてはあまり詳しくありませんが、提供されたエラーの簡単な概要とそのドキュメントページから、new演算子を使用することをお勧めします。エラーから、Swift_SmtpTransportクラスにはnewInstanceメソッドがないため、これを使用して新しいインスタンスを作成すると、エラーがスローされます。代わりにこれを使用してみてください:

require_once 'Swift/lib/Swift_required.php';

$transport = new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl');
$transport->setUsername('[email protected]')->setPassword('password');

$mailer = new Swift_Mailer($transport);

$message = new Swift_Message('Weekly Hours');
$message
   ->setFrom(['[email protected]' => 'My Name'])
   ->setTo(['[email protected]' => 'Recipient'])
   ->setSubject('Weekly Hours')
   ->setBody('Test Message', 'text/html');

$result = $mailer->send($message);

編集:PHP(括弧なしで)オブジェクトをインスタンス化した後に直接メソッドを呼び出すことはできません)ありがとう、Art Geigel。

15