views:

452

answers:

1

My current code is this

$swift = email::connect();


        $swift->setSubject('hello')
              ->setFrom(array('[email protected]' => 'Alex'))
              ->setTo(array('[email protected]' => 'Alex'))
              ->setBody('hello')  
              ->attach(Swift_Attachment::fromPath(DOCROOT . 'assets/attachments/instructions.pdf'));

        $swift->send();

The email::connect() returns an instance of SwiftMailer.

As per these docs, it would seem that it should work.

However, I get an error

Fatal error: Call to undefined method Swift_Mailer::setSubject() in /home/user/public_html/application/classes/controller/properties.php  on line 45

I've seen that email::connect() does exactly what the example code in the docs does. That is

  • include the correct file
  • return an instance of the library

What am I doing wrong?

Thanks

+1  A: 

You're using a Swift_Mailer instance, not a Swift_Message like in the example you linked to.

I think you want something like this:

$swift = email::connect();
$message = Swift_Message::newInstance();

        $message->setSubject('hello')
              ->setFrom(array('[email protected]' => 'Alex'))
              ->setTo(array('[email protected]' => 'Alex'))
              ->setBody('hello')  
              ->attach(Swift_Attachment::fromPath(DOCROOT . 'assets/attachments/instructions.pdf'));

        $swift->send($message);
Brian McKenna
Cursed by late Friday afternoon. Thanks mate and have a good weekend! BTW, I've seen you're from Brisbane, I'd buy you a beer if you lived 100km north :P
alex
@alex: Thanks, I don't actually drink (the hardest I drink would probably be a *ginger* beer). Have a good weekend too!
Brian McKenna