phpmailer FAQ

Contents

I am getting a "SMTP Error: The following recipients failed [myemail@mydomain]"
This error usually occurs because relaying is not allowed on the SMTP server from the IP address of the web server. Go to the configuration of your SMTP server and turn relaying on for your IP address and try again.


I'm using the SMTP mailer and I keep on getting a timeout message well before the X seconds I set it for. What gives?
PHP versions 4.0.4pl1 and earlier have a bug in which sockets timeout early. You can fix this by re-compiling PHP 4.0.4pl1 with this fix:
timeoutfix.diff. Otherwise you can wait for the new PHP release.


I am concerned that using include files will take up too much processing time on my computer. How can I make it run faster?
PHP by itself is very fast. Much faster than ASP or JSP running on the same type of server. This is because it has very little overhead compared to its competitors and it pre-compiles all of its code before it runs each script (in PHP4). However, all of this compiling and re-compiling can take up a lot of valuable computer resources. However, there are programs out there that compile PHP code and store it in memory (or on mmaped files) to reduce the processing immensely. Two of these:
APC (Alternative PHP Cache), Afterburner (Win32 download), and PHP Accelerator are excellent free tools that do just this. If you have the money you might also try Zend Cache, it is even faster than most open source varieties. All of these tools make your scripts run faster while also reducing the load on your server. I have tried them myself and they are quite stable too.


What mailer gives me the best performance?
On a single machine the mail() or sendmail mailers give you the best performance because they do not have the added overhead of SMTP. If you have you have your mail server on a another machine then SMTP is your only option, but you do get the benefit of redundant mail servers.


When I try to attach a file with on my server I get a "Could not find {file} on filesystem error". Why is this?
If you are using a Unix machine this is probably because the user running your web server does not have read access to the directory in question. If you are using Windows, then the problem probably is that you have used single backslashes to denote directories ("\"). A single backslash has a special meaning to PHP so these are not valid. Instead use double backslashes ("\\") or a single forward slash ("/").