SwiftMailer akzeptiert mein setSubject nicht

suntrop

Erfahrenes Mitglied
Hallo. Ich habe gerade den Swift Mailer eingebunden, um Mails via SMTP versenden zu können.
Die ersten Testmails liefen auch einwandfrei. Nur jetzt erhalte ich folgende Meldung:

Fatal error: Call to undefined method Swift_Mailer::setSubject() in /pfad/zur/datei.php on line 113

In Line 113 steht:
->setSubject('My amazing subject')

und der ganze Code sieht so aus:
PHP:
//Create the Transport
	$transport = Swift_SmtpTransport::newInstance($config['EMAIL']['SMTP'], $config['EMAIL']['PORT'])
	  ->setUsername($config['EMAIL']['USERNAME'])
	  ->setPassword($config['EMAIL']['PASSWORD'])
	  ;
	  
	//Create the Mailer using your created Transport
	$mailer = Swift_Mailer::newInstance($transport)
		->setSubject('My amazing subject')
		->setFrom(array('webdevelopment@example.com' => 'Webdevelopment'))
		->setReturnPath('bounces@example.org')
		->setBcc('info@example.com')
		->setReplyTo('test@example.net')
		->setTo(array('ich@example.org', 'nochmalich@example.com' => 'suntrop'))
		->setBody('Nachrichtentext der E-Mail')
		->addPart('<q>Here is the message itself</q>', 'text/html')
		;
	  
	//Send the message
	$result = $mailer->send($message);

Ich wollte es genauso umsetzten, wie in diesem Beispiel: http://swiftmailer.org/docs/message-quickref (mit einer Mischung aus diesem: http://swiftmailer.org/docs/sending-quickref)

Warum aktzeptiert das $mailer-Objekt mein setSubject() nicht?
„Call to undefined method“ ist mir schon einige Male begegnet, aber hier sehe ich keinen Unterschied zum Beispiel in der Doku und vorher hat es funktioniert :confused:

Kann mir jemand auf die Sprünge helfen?
 
Naja, nicht ganz. Die Methode setSubject befindet sich in der Klasse Swift_Message, da diese die Klasse Swift_Mime_SimpleMessage erweitert. Das bedeutet, du musst erstmal eine Message erzeugen, diese kannst du dann an send() übergeben:

PHP:
    //Create the Mailer using your created Transport
    $mailer = Swift_Mailer::newInstance($transport);

    $message = Swift_Message::newInstance()
        ->setSubject('My amazing subject')
        ->setFrom(array('webdevelopment@example.com' => 'Webdevelopment'))
        ->setReturnPath('bounces@example.org')
        ->setBcc('info@example.com')
        ->setReplyTo('test@example.net')
        ->setTo(array('ich@example.org', 'nochmalich@example.com' => 'suntrop'))
        ->setBody('Nachrichtentext der E-Mail')
        ->addPart('<q>Here is the message itself</q>', 'text/html')
        ;

    //Send the message
    $result = $mailer->send($message);
 
Hatte gar keine Info erhalten, dass du geantwortet hast.

Habe es mittlerweile hin bekommen. Ich hatte übersehen, dass ich zwei Objekte brauche, eines für die Message und eines zum Senden. Jetzt gehts aber :)

Danke dir!
 
Zurück