[wp-hackers] PHPMailer was a mistake

Jacob Santos dragonwing at dragonu.net
Sat Sep 15 00:05:54 GMT 2007


Going over the previous thread, it seems that only the bad/wrong 
suggestions are being heard, while the more correct arguments are being 
ignored. Perhaps, I might have better luck, but I doubt it. At least be 
open to reason. This will be long and it will be harsh.

Reasons Swift Mailer should be used:

1. PHP 4 support will be available long enough for the package to have 
reached stable enough status and it would probably only be another 6 
months before PHP 4 support will be dropped altogether. Supporting PHP 4 
after that would not be the wisest decision.

2. Swift Mailer already has a close enough API to PHPMailer that 
switching would not be difficult and has more features that would have 
to be added by the core developers or by patches. It is not a viable 
choice to continue supporting a dead project when an already better one 
with more features that are correctly implemented exists.

3. Swift Mailer supports PHP 4 and PHP 5 currently and is in the third 
version. Thus, it meets and exceeds the requirements for WordPress and 
will be a long term solution for plugin developers.

4. Swift Mailer is maintained by a skilled developer, therefore 
WordPress developers are wasting time maintaining PHPMailer. Every bug 
report, patch, and commit to class-phpmailer.php is only wasted 
resources that could be better spent making WordPress even more kick ass.


Matt Mullenweg wrote:
> PHP-Mailer is not that big. If we're in a situation where we're 
> maintaining it anyway, let's just give it its own repo and make it 
> available as a public good for others in the same situation as us. 
> (Needing a small, but functional mailer that falls back to mail().)

Something like this already exists and it is called Swift Mailer.


Peter Westwood wrote:
> For me the things that turn me off SwiftMailer over PHPMailer are from 
> a quick look at it:
>
>  1. The number of files - this increases the chance of someone 
> breaking there install with a dodgy ftp transfer.
>  2. PHP4 support is being dropped so by next year we will be in the 
> same place we are now - supporting the mailer ourselves
>  3. SwiftMailer is designed for mass-mailing PHP applications - not 
> something required in the core
>  4. SwiftMailer requires configuring with an smtp server - it doesn't 
> use mail() which means we have to add more options to the admin which 
> must be configured - giving a slower install (mail is sent during 
> install)
>
> For me, especially once you take 2 into account, we are better staying 
> with PHPMailer now - if we can make that work better than mail() for 
> 90% of our users then we will be in the right place - the last 10% 
> will realistically be difficult to support and better suited to a 
> wp_mail replacement plugin.
>
> westi 

1. There are three things wrong with your point. The first is that half 
of the statement is a matter of opinion and preference. The second is 
that the last point is very rare, I've only had that problem once in all 
of the years I've uploaded something and that was only a matter of 
switching from passive mode to regular and uploading the files that 
failed the first time. This also shouldn't be the lone reason for not 
doing something as it won't effect the majority of users.

The third reason is the kicker. Are you trying to tell me that because 
Swift Mailer uses a different class pattern that it is immediately at 
fault? A quick code audit would have told you that a lot of the core 
functionality of PHPMailer is in Swift Mailer, but correctly split into 
separate classes. PHPMailer is a mess. It uses the Singleton class 
pattern when it should at least, from what I've read in the comments, 
into 4 or 5 separate classes.

Is object theory difficult? Hell yes, I've been researching and 
developing using classes for years and I've only just recently finally 
understood some of the concepts. You don't pack everything in a single 
class. It is noobish and in most cases, wrong. Objects should only 
encapsulate what its functionality requires. For every section of 
comments, the methods below should be in their own class. Google It, and 
tell me I'm wrong.

Classes should be separated, unlike the mess that is WordPress classes. 
You should be able to look at the class path and be able to find the 
class. This is what I've been saying! If you *NEED* documentation to 
find a class, then you are doing something wrong. The benefits of 
splitting the classes into their separate files, is more than this 
however. It is good coding practice, because it makes it easier for 
other developers, for the above and is the defined coding style of other 
languages. If you don't agree with me, you *SHOULD* agree with 
programmers far smarter than you and I would ever hope to even dream to be.

2. PHP 4 support is being dropped by the PHP developers, therefore your 
point is invalid. Are you going to pick up programming PHP 4 for the 
masses after the core developers have dropped development? It would be 
pointless to continue development on a platform that is not going to be 
supported. "Yes, I would like to shoot myself in my foot, willingly." 
Please, WordPress should drop support for PHP 4 anyway after 8/8/08 and 
you have no valid argument against this, because this is how normal 
professional software development is.

Do you think software companies still develop and maintain software for 
Windows 98? Nope and you'll be a fool to do so.

3. Excuse me. What about plugins? What about Subscribe2? You don't have 
to support plugins, but at least don't make it difficult for those who 
want a reliable mailer. By your and Matt's own admission, PHPMailer is 
even more than what is required.

You are also wrong, because the whole purpose of PHPMailer is not for 
core functionality, you've already admitted that it is more than what is 
required, it is for external development. You are also wrong that Swift 
Mailer is for mass mailers, that is not the case. It is merely a better 
replacement for the built-in mail function. If you took the time to look 
at what it provided or at least admit, if in fact you did more than 
glance at it. You would realize that it offers enough to even replace 
PHPMailer easily. Not all of the classes are required to make it work 
<http://www.swiftmailer.org/wikidocs/v3/tutorials/basic>.

 From the documentation, it will only take 4 or 5 lines, unlike I 
suspect PHPMailer.

4. Like another person pointed out, there are many connection options 
that you can use. Your argument is therefore incorrect.

Let us count up the total. Oh yeah, You're totally wrong. You lose, but 
since you are a core developer, we all lose. Your opinion might matter, 
because of your position, but that would only make you an ass for taking 
advantage of your position. By shoving better solutions aside because of 
your opinion, you have ignored facts that would better help the 
community, namely the plugin one.


Lloyd Budd wrote:
> That is under consideration. 03/10/07 21:40:03 changed by ryan
> http://trac.wordpress.org/ticket/3862#comment:7
>
> "I've been looking over swiftmailer, but it is has dozens of files
> versus phpmailer's one file. If anyone wants to experiment with
> plugging swiftmailer into wp_mail(), let us know how it goes.
>
> http://swiftmailer.org/
>
> Use their php4 package rather than the php5 one."
>
> Cheers,
No, it isn't, because legacy code is still being maintained. If it was, 
then all of the problems (Subscribe2 as one example) that came up and is 
associated with PHPMailer would have been reason enough to switch to a 
better solution.



Marcos Sader | marcosmedia wrote:
> Email is used just for notifications in the core and phpMailer does the job,
> not to mention that it is a one file solution, whereas Swift Mailer has
> probably the same size that WordPress.
>
> If you are developing a plugin and need a solid email framework to build
> upon, then use SM, build a wrapper and pack it in a plugin.
>
>
> grtz

If that is the case, then the built-in solution mail() should be used 
instead and phpMailer should also be a plugin, albeit, probably a plugin 
that is packaged with WordPress. I would then say that Swift Mailer 
should be along that package and provide both along side each other for 
plugin authors. Or at least include both and allow the plugin authors to 
call either one they wish.

"Neither of these things seem related to whether one is a better 
solution than the other. Personally, I'd think that reliable built-in 
email capabilies would be far more important implementation details like 
that, regardless of what the solution is." -- Charles

I concur, really the arguments so far are piled on a stack of cards and 
any real developer would see the discussion for what it is. I think the 
others need to grow up and learn to face change and when it is time to 
change. It is time to call it quits for PHPMailer, and find another 
solution that is packaged with WordPress.


More information about the wp-hackers mailing list