[imp] Dynamic mailer config based on FROM and TO addresses

Robin Bankhead horde at headbank.co.uk
Sat Oct 26 10:37:47 UTC 2013


Quoting Michael M Slusarz <slusarz at horde.org>:

>
> Again, there's no need to autoload.  Just because we have an  
> autoloader doesn't mean that require can't be used.  In this  
> particular case, it is a heck of a lot easier to simply require the  
> file directly instead of trying to manipulate autoloading to work.
>
Point taken, but in this case where would I require it _from_?   
Assuming I can do all the work inside my child class (example below),  
I wouldn't have a reason to edit any core files or add any others  
myself.

>>> To ensure a class is autoloadable, just directly include/require  
>>> the file at some point prior to the class being accessed.
>>>
>> Isn't that just manual loading?
>
> Yes.  Again, there's nothing wrong with this.  Autoloading is  
> important when you are distributing code.  When you are doing  
> something locally, there's no problem to include a single file when  
> necessary.
>
I guess I think like a distributor ;) I would be updating the horde  
distro once in a while, and for those times it'd seem easier (to me)  
if my own code additions were in the form of an "overlay" rather than  
a patch-set. No distro files being touched seems better.

>> Think I will need to butcher Compose.php anyway though, since my class
>> won't have access to the headers within itself at invocation time ...
>> (Unless there is a way to retrieve them from its constructor?)
>
> Not sure what you mean by this(?)  Extending a mail transport  
> object, you have access to all the outgoing headers of the message.
>
You're quite right, sorry.  I was focusing on the  
IMP_Compose::sendMessage() method where the mailer's invoked, without  
looking at the mailer's own send() method since that's where we end  
up.  Extending that method should be all I need to do then (uh, right?)

So to cover more fully the intended approach (yes, still abusing autoloading):

File [HORDEDIR]/lib/Ext/Smtpcustom.php
<?php
class Horde_Ext_Smtpcustom extends Horde_Mail_Transport_Smtphorde {

     public function send($recipients, array $headers, $body) {

         // Do my stuff, set $_params as needed

         parent::send($recipients, $headers, $body);
     }
}
?>

Testing this later today if I get time. Seems like it should be  
adequate though, no?

Robin Bankhead


More information about the imp mailing list