SMTP Error Issue - PHPMailer

1.2k Views Asked by At

I have a daily newsletter I send out to a list of people each day. I use PHP and the PHPMailer object to send the emails.

This has been working fine up until today when I didn't get an email (test) and I checked the logs to find that intermittently I was getting SMTP errors back from

mail->Send();

Method of the class on SOME of the people - not all of them.

All of the emails were exactly the same size (length in characters) apart from their name and email address.

The error details from

$mail->ErrorInfo;

Included these two errors

SMTP Error: Data not accepted.<p>SMTP server error: 2.1.5 Ok

SMTP Error: Data not accepted.<p&gtSMTP server error: </p>

Why there are broken P tags in the error message I have no idea - also why the first error has OK in it??

However other people in the loop had emails go out fine.

Also when I put the script into test mode so ONLY these failures were emailed out (so one call of the script = one email to one person), I found no problem and the people got their emaail.

Now I asked tech support what the error meant and got back "Google it" and I can't find the error 2.1.5 OK anywhere. I don't really get why it says OK after an error either.

As a test for tomorrow I put a test in for a failed Send and then a Sleep for 5 seconds with a retry.

I don't know if this will help but I thought that maybe my SMTP server which is on the same server as my script (Rackspace VPS Linux) was having temporary issues connecting so a sleep might be handy in this situation.

This is the first time I have had this issue, I haven't rebooted APACHE or my server (or mailserver) and before this script I had another one send out 403 emails without any problem.

It would be nice to know what the error is and why it happened though.

Rob

1

There are 1 best solutions below

4
On

That error is defined exactly where you would expect it to be - in the RFC that defines SMTP error codes. 2.1.5 means "Destination address valid". That it starts with a 2 means it's not an error as such, but a response code - warnings and errors start with 4 and 5. Why you got it, I don't know, but it certainly seems it was not expected in that context. Mail servers often have problems - they run out of disk space, get swamped by spam filtering, and this is why mail servers have queues. Sending directly using PHPMailer's SMTP class is not appropriate for high-volume sending - using SMTP is fine, but point it at a proper (nearby) MTA that can handle deliveries properly.

As for the garbled ErrorInfo content, I suspect you are using an old version of PHPMailer - the debug output has been cleaned up fairly recently. Another thing that changed lately is the handling of errors during single sends to multiple recipients (e.g. BCCs) - it's now much more likely to get to the end of a long recipient list without giving up than it was before.