Re: override built-in mail()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2011-02-04 at 20:25 +0100, Thijs Lensselink wrote:
> On 02/04/2011 04:59 PM, Steve Staples wrote:
> > On Fri, 2011-02-04 at 07:51 -0800, Jim Lucas wrote:
> >> On 2/4/2011 5:37 AM, Steve Staples wrote:
> >>> Hello Guys/Gals,
> >>>
> >>> it's friday (at least where I am it is) and I have an issue with a
> >>> script that I just started using again.  The problem is, is that it uses
> >>> the built in PHP mail() function, and on my testing server, mail()
> >>> doesn't work. The other issue, is that I use SMTP Auth to connect to my
> >>> mail server, so that when mail sends out, it comes from my mail server
> >>> so that there is less of a chance for being marked as SPAM.
> >>>
> >>> So, what I am looking to do, is use either the trust old Pear::Mail or
> >>> PHPMailer scripts (I am sure there are other ones out there, but those
> >>> are the 2 I am most familiar with).
> >>>
> >>> So now to my actual question.  How can I override the built-in PHP
> >>> mail() function, to let either of those 2 (or something else someone may
> >>> suggest) to act in the same manner as the mail() function?
> >>>
> >>> Is this easy?  I've googled, but haven't seen any reference to doing
> >>> what I am looking to do (maybe I just can't google)
> >>>
> >>> Steve
> >>>
> >>>
> >>
> >> You cannot "override" a function.  You will have to write a new function,
> >> "my_mail" or some such.  Have it take the same arguments as the built in mail
> >> function, but internally it uses phpmailer or the likes.  Then, do a search and
> >> replace for " mail(" with " my_mail("
> >>
> >> One other possible option, which I had not contemplated until now, would be to
> >> actually specify a replacement sendmail executable when setting up the sendmail
> >> option in the php.ini.  You could specify a php script that can run as though it
> >> was sendmail, accept the same arguments, etc... but do all the phpmailer stuff
> >> inside.
> >>
> >> Jim Lucas
> >>
> > 
> > after posting this, and doing some more googleing, I found this:
> > http://ca.php.net/manual/en/function.override-function.php
> > 
> > it says you can override built-in php functions... I haven't tested to
> > see if i can do it, but it seems possible... has anyone used this
> > before?  and will it do what I need?  (this has been put on the back
> > burner for today, so tonight I will look more deeper into this unless
> > someone else has any luck in the mean time)
> > 
> > TIA!
> > 
> > Steve
> > 
> > 
> 
> In PHP versions < 5.3 you need something like runkit or apd. In PHP 5.3
> and up you could use monkey patching
> 
> <?php
> 
> namespace somenamespace;
> 
> function mail() {
>   // do something!
> }
> 
> 
> You don't actually overwrite the core function but it's close.
> 
> <?php
> 
> use somenamespace;
> 
> mail() // will call the namespaced function
> 
> \mail() // will call the core function
> 

The reason i was hoping to override the function, was because then if
the script has updates, then i would need to change all references of
mail() to my_mail()   or if i am not using < 5.3  (and what is runkit or
apd??)



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux