Are you sure the error code is 544, not 554? RFC2821 does not define any error code 544. 554 is a valid error code, and means "no valid rcpt", which fits this case.
The problem is obviously with the email address itself. As you didn't provide the address (which is understandable), it is difficult to debug for you. However I still can provide you some suggestions:
- Don't surrounding your email address with <>
- If your valid address contains specialy characters, such like space, put them in quot, like: "A valid address"@valid.com. For example:
sSendEmail('"a valid address"@valid.com'...
- I don't think this is a problem to you, as I saw you used single quot, but I put it here any way. If you use double quot, better be careful. If you say "abc@hij.com", Perl will try to resolve @hij for you. Even if @hij does not exist, this is still a problem, as Perl will resolve your email address to abc.com. If you don't have warnings truned on, all this happens quitely. (Of course, you can say abc\@hij.com)
Update:
- poj is rigth about the sequence. According to RFC2821:
"There are three steps to SMTP mail transactions. The transaction starts with a MAIL command which gives the sender identification. (In general, the MAIL command may be sent only when no mail transaction is in progress; see section 4.1.4.) A series of one or more RCPT commands(pg comment: In Net::SMTP, you don't need to call recipient multiple times, as that function accepts multiple recipients, and resolves them into multiple RCPT commands for you) follows giving the receiver information. Then a DATA command initiates transfer of the mail data and is terminated by the "end of mail" data indicator, which also confirms the transaction. "
- However I don't think you can remove the auth command. I don't think that's the problem any way, and if your server has SASL authentication turned on, it is not something you would be able to skip.