[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

PHP5 WinXP Mail SMTP Failure because of an unknown reason

Posted on 2004-10-26
8
Medium Priority
?
936 Views
Last Modified: 2008-01-09
Hi all,

I've got a problem when I try to send out an email.
It seems that PHP or something else is messing up the to-header and thus the smtp server doesn't know what to do with it.

Configuration:
WindowsXP Professional
IIS SMTP Server (also tried my ISP's smtp)
PHP5.0.2
Apache 2.something

Headers that I'm sending out:

[code]Message-ID: <20041026111124DoppyMailer@validdomain.ext>
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Doppy Server Mailer
From: "Source adress" <doppy@validdomain.ext>
To: "doppy@validdomain.ext" <doppy@validdomain.ext>; "doppynl@validdomain2.ext" <doppy@validdomain2.ext>
CC: "doppy@validdomain.ext2" <doppy@validdomain.ext2>
Subject: Just Testing again...
Return-Path: <bounce@validdomain.ext>

testmessage[/code]
note: I replaced the names with the adres to find out if that solved it, it didn't.

The error:
Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in D:\ServerHTTP\Internal\storage\classes\email.php on line 50

When I leave out the CC-header the message is:
Warning: mail() [function.mail]: SMTP server response: 503 No recipient(s). in D:\ServerHTTP\Internal\storage\classes\email.php on line 50

PHP.ini configuration is set to use the smtpserver on localhost default port.

Anyone got any idea what is going on here??
0
Comment
Question by:DoppyNL
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2
8 Comments
 

Expert Comment

by:danchuee
ID: 12409068
I'm not sure where the error is coming from. Have you tried a little testing on the mail function. Are you altering the headers yourself? Are you able to send a mail without adding your own headers.

I know that this is not a solution, but just wanted some more information. How does your code look?
0
 
LVL 3

Expert Comment

by:KvdnBerg
ID: 12409134
Could you post the complete code including the actual mail function?
Keep in mind that the mail function takes the to adresses as the first argument, the To: in the headers might not be enough to make it work properly. Example:

$subject = "About this";
$message = "Message text";
$headers = "To: ToAddress <to@address.com>, To2 <to2@address.com>\r\n";
$headers.= "CC: CCAddress <cc@address.com\r\n";
etc

mail("to@address.com, to2@address.com", $subject, $message, $headers);
0
 
LVL 6

Author Comment

by:DoppyNL
ID: 12409155
I'm creating my own headers and passing them to the mail function.

when I do something like this:
mail('valid@adress.ext','normal-test2','message');
it is send and received without a hitch.

Since a plain use of the mail function seems to work, there must be something wrong with my headers....

The code responsible for sending the email:

$headers = 'Message-ID: <' . strftime('%Y%m%d%H%M%S') . uniqueid() . 'DoppyMailer@validdomain.ext>' . "\n";
$headers .= 'X-Priority: 3' . "\n";
$headers .= 'X-MSMail-Priority: Normal' . "\n";
$headers .= 'X-Mailer: Doppy Server Mailer' . "\n";
$headers .= 'From: ' . $this->source . "\n";
$headers .= 'To: ' . implode('; ', $this->to) . "\n";
if (count($this->cc) > 0)
{
      $headers .= 'CC: ' . implode('; ', $this->cc) . "\n";
}
if (count($this->bcc) > 0)
{
      $headers .= 'BCC: ' . implode('; ', $this->bcc) . "\n";
}
$headers .= 'Subject: ' . $this->subject . "\n";
$headers .= 'Return-Path: <' . self::bounceadress . '>' . "\n";
return(mail('', '', $this->message, $headers));

$this->to, $this->cc and $this->bcc are arrays with items that look like:
"name of person" <adres@ofperson.ext>

I allready posted an example of the resulting $headers variable in my previous post.

Anyone of you see my mistake in here somewhere?
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 6

Author Comment

by:DoppyNL
ID: 12409169
@KvdnBerg:
When I change this line:
return(mail('', '', $this->message, $headers));
to:
return(mail(implode('; ', $this->to), '', $this->message, $headers));
and leave the rest as it is I get the exact same error.

If it then also comment out the To: line in the headers I also get the same error message.
0
 

Expert Comment

by:danchuee
ID: 12409200
Make sure that each header ends with \r\n. Windows especially is picky this way. Also, I would recommend changing the implode statements to use a comma instead of a semicolon altough I don't think that is really the problem.
0
 
LVL 6

Author Comment

by:DoppyNL
ID: 12409207
replacing \n with \r\n didn't help (was probably trying that when you were typing your message! :P )

replacing ; with , as a seperator also didn't help.
0
 
LVL 3

Accepted Solution

by:
KvdnBerg earned 1000 total points
ID: 12409270
Did you try to change all the to addresses to the form of aa@bb.com instead of name <aa@bb.com> yet? This is what I got from the PHP manual:

Note:  The to parameter should not be an address in the form of "Something <someone@example.com>". The mail command may not parse this properly while talking with the MTA (Particularly under Windows).
0
 
LVL 6

Author Comment

by:DoppyNL
ID: 12409394
Problem solved:

- mail function overrides the "to" and "subject" of your own headers with what you pass along to the function. So you must set the to-header and the subject-header in the mail-function, not in your own headers. Other headers do work normally.

- mail function does NOT understand this format at all:
"person name" <person@adress.ext>
this doesn't work for to, cc or bcc. instead just use:
person@adress.ext


Problem solved; tnx all for digging in the problem.
Accepting the correct answer.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
This article discusses four methods for overlaying images in a container on a web page
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question