Reputation: 11904
I am using GMail SMTP server to send mails. And PHPMailer as the mail sending script.
I have received this error (I log all SMTP errors, that is whenever, PHPMailer::Send fails): -
SMTP Error: Data not accepted.<p>SMTP server error: 4.7.0 Temporary System Problem. Try again later (WS)
But the mails is actually sent. (This I know by matching the timestamp of sent mails, and the timestamp in the log.)
How is it possible? What does that error mean?
UPDATE: I think I was not clear in my question. Let me rephrase it: -
I am not worried if a mail is lost after PHPMailer is able to send it to GMail SMTP. But I am worried that PHPMailer has returned error, but the mail was sent. Is it possible?
Upvotes: 2
Views: 4361
Reputation: 3156
I think that SMTP does not guarantee delivery anyway. It is a store-and-forward mechanism. That is why some emails can go missing (for e.g. if a relay crashed while in the midst of relaying the message).
If you are depending on email for important functions, you may want to enforce some sort of feed-back mechanism (maybe via a response). Then, if a response is not received within a certain time frame, you try it again.
UPDATE: It is most certainly possible. All you need is a mail server that sends you an error code instead. It may send an error code for a variety of reasons, too many to list. I suggested the above method because, you should never take server responses on trust alone, especially if it does not any sort of atomicity/acidity.
Upvotes: 2