web-dev-qa-db-fra.com

Swiftmailer - Erreur non interceptée: appel à la méthode non définie Swift_SmtpTransport :: newInstance ()

J'essaie d'envoyer des e-mails à l'aide de Swiftmailer.

Je reçois une erreur non interceptée:

Appel à la méthode non définie Swift_SmtpTransport :: newInstance ().

Voici le code:

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

D'après le code ci-dessus, quelle serait la cause de cette erreur?

11
K Davis

Je ne connais pas très bien SwiftMailer, mais à partir du bref aperçu de l'erreur que vous avez fournie et de leur page de documentation, je peux vous suggérer d'essayer d'utiliser l'opérateur new. D'après l'erreur, il est clair que la classe Swift_SmtpTransport N'a pas de méthode newInstance, donc lorsque vous l'utilisez pour créer une nouvelle instance, elle génère une erreur. Essayez peut-être d'utiliser ceci à la place:

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

Edit: PHP Ne permet pas un appel direct de méthode après l'instanciation d'un objet (sans parenthèses). Merci, Art Geigel.

15
Luka Kvavilashvili