[php] mail() op IIS => SMTP server response: 501

Pagina: 1
Acties:
  • 306 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
HET NIEUWE PROBLEEM:

Ben ik weer, nog meer problemen met IIS, of het script...

Dit is niet mijn eigen server dus ik kan er niet direct dingen aan veranderen, maar de relevante settings:
- PHP Version 5.0.5
- System = Windows NT WSLEASEDYNAM01 5.2 build 3790
- SMTP = localhost (port 25)

Het script is nu:
code:
1
2
3
4
5
6
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "To: ".$email."\r\n";
$headers .= "From: info@domein.nl";

mail($email, $subject, $mailcontent, $headers);


Bij merkt alles perfect, dwz, als ik vanaf mijn computer het form invul, verstuurt ie em gewoon en komt et mailtje gewoon aan.

Maar iemand anders, die em vanaf zijn computer invult krijgt MEESTAL een error, dus niet consequent. De error is:
Warning: mail() [function.mail]: SMTP server response: 550 Requested action not
taken: mailbox unavailable or not local in
E:\Websites\LocalUser\domein.nl\docs\sendmail.php on line 56
Ik vind et echt bizar, want bij mij werkt ie gewoon, ik denk dus ook dat iets met die server aan de hand is. Maar ik heb eigenlijk geen idee.
Vandaar mijn roep naar GoT hulp :)

OUDE PROBLEEM

Ik heb een php script op een windows server staan:


$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "To: $email \r\n";
$headers .= "From: <email@mail.com> \r\n";

echo $headers;
return(mail($email, $subject, $mailcontent, $headers));


en dan krijg ik de error:

Warning: mail() [function.mail]: SMTP server response: 501 Syntax error in parameters or arguments in


Server:
System Windows NT WSLEASEDYNAM01 5.2 build 3790

SMTP localhost localhost
smtp_port 25 25

SERVER_SOFTWARE Microsoft-IIS/6.0


Ik heb wel wat dingen gevonden, maar niets concreets, misschien dat IIS port 25 ergens voor gebruikt ofzo??

Dit werkte allemaal wel op linux+apache

Ik kom er niet uit... thx

[ Voor 62% gewijzigd door Verwijderd op 17-11-2005 13:38 ]


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 12:03
501 = Relaying niet toegestaan. Je doet iets fout met het zenden van de code.
Ik zie niet echt in wat je onderzocht hebt. Wellicht kan je kijken WAT er naar poort 25 gestuurd wordt?

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
2 dingen die ik zo snel zie:

[list]• De spaties vóór de \r\n zijn niet OK volgens mij;
• De \r\n die je als laatste (dus achter de From) plaatst is ook niet OK afaik.
DiedX schreef op maandag 17 oktober 2005 @ 23:55:
501 = Relaying niet toegestaan. Je doet iets fout met het zenden van de code.
Waarom staat er dan een errormsg m.b.t. syntax en staat er niets over relay denied? RFC zegt precies hetzelfde en rept ook niets over relaying.. Mijn Postfix geeft een 554-error voor relay denied ;)

[ Voor 55% gewijzigd door Osiris op 17-10-2005 23:59 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@diedx Warning: mail() [function.mail]: SMTP server response: 501 Syntax error in parameters or arguments in... Agreed met osiris

Die spaties was al een probeerseltje :) ik ga nu die laatste \r\n weghalen

edit: Werkt niet hij print btw:
MIME-Version: 1.0 Content-type: text/html; charset=iso-8859-1 To: abc@123.nl From:

en dan de error:
Warning: mail() [function.mail]: SMTP server response: 501 Syntax error in parameters or arguments in *URL* on line 52

vind et wel raar dat er na From: niets meer staat

[ Voor 43% gewijzigd door Verwijderd op 18-10-2005 00:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 18 oktober 2005 @ 00:08:
vind et wel raar dat er na From: niets meer staat
Dat is niet zo heel raar, aangezien je browser denkt dat alles wat tussen < en > staat een tag is en dat wordt dan niet weergegeven. Als je de paginabron bekijkt staat het er wel in

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Uit rfc2821

501 Syntax error in parameters or arguments

Kijk ook even of het $email adres geen 8 bits karakters bevat. In een header zijn alleen 7 bits karakters toegestaan.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 18 oktober 2005 @ 07:50:
[...]

Dat is niet zo heel raar, aangezien je browser denkt dat alles wat tussen < en > staat een tag is en dat wordt dan niet weergegeven. Als je de paginabron bekijkt staat het er wel in
8)7 |:( idd, dom van me

In $email staat een waarde die door de user word ingevuld.

Ik moet er wel even bij zeggen dat alles dus wel op apache werkte

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Verwijderd schreef op dinsdag 18 oktober 2005 @ 10:17:
[...]
In $email staat een waarde die door de user word ingevuld.
Voeg validatie van het email adres toe en plaats get tussen < en > zodat de header in ieder geval rfc2822 volgt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
validatie is er, wat bedoel je met die get tussen < en >

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Verwijderd schreef op dinsdag 18 oktober 2005 @ 11:21:
validatie is er, wat bedoel je met die get tussen < en >
http://www.ietf.org/rfc/rfc2822.txt
sectie 3.4, zie angle-addr

address = mailbox / group

mailbox = name-addr / addr-spec

name-addr = [display-name] angle-addr

angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit heb ik nu:

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
/* additional headers */
$headers .= "To: <".$email.">\r\n";
$headers .= "From: <info@domein.nl>";

Is dit wat je bedoelde? Werkt nog steeds niet iig...

Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 12:03
Osiris schreef op maandag 17 oktober 2005 @ 23:55:
Waarom staat er dan een errormsg m.b.t. syntax en staat er niets over relay denied? RFC zegt precies hetzelfde en rept ook niets over relaying.. Mijn Postfix geeft een 554-error voor relay denied ;)
Ach jezus. Wat je wil joh. Het is in ieder geval niet toegestaan om mail te versturen. Da's een 5xx foutmelding.

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

5xx is wel erg algemeen DiedX.
Misschien wil je zelf even gaan [google=smtp error codes] ?

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 12:03
BackSlash32 schreef op dinsdag 18 oktober 2005 @ 19:12:
5xx is wel erg algemeen DiedX.
Misschien wil je zelf even gaan [google=smtp error codes] ?
5xx is heel simpel: het is niet toegestaan te verzenden. Permanent error. Dat dit door een programmeerfout van de TS is boeit wat mij betreft niet. Verder ga ik hier niet op in.

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Ik wel.

501 is "je doet iets fout. Ik kan dit niet versturen".
Dat is absoluut niet hetzelfde als "niet toegestaan te versturen".
Die errorcodes zijn er niet voor niks.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Je kunt eens proberen of het wel werkt als je die < en > weglaat.
Dus:
PHP:
1
2
$headers .= "To: ".$email."\r\n";
$headers .= "From: info@domein.nl\r\n";

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat was het idd! Ik was er al achter, het schijnt dat /mailenable op IIS zelf die < en > toevoegd.

Bedankt allemaal, mag slotje op

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben ik weer, nog meer problemen met IIS, of het script...

Dit is niet mijn eigen server dus ik kan er niet direct dingen aan veranderen, maar de relevante settings:
- PHP Version 5.0.5
- System = Windows NT WSLEASEDYNAM01 5.2 build 3790
- SMTP = localhost (port 25)

Het script is nu:
code:
1
2
3
4
5
6
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "To: ".$email."\r\n";
$headers .= "From: info@domein.nl";

mail($email, $subject, $mailcontent, $headers);


Bij merkt alles perfect, dwz, als ik vanaf mijn computer het form invul, verstuurt ie em gewoon en komt et mailtje gewoon aan.

Maar iemand anders, die em vanaf zijn computer invult krijgt MEESTAL een error, dus niet consequent. De error is:
Warning: mail() [function.mail]: SMTP server response: 550 Requested action not
taken: mailbox unavailable or not local in
E:\Websites\LocalUser\domein.nl\docs\sendmail.php on line 56
Ik vind et echt bizar, want bij mij werkt ie gewoon, ik denk dus ook dat iets met die server aan de hand is. Maar ik heb eigenlijk geen idee.
Vandaar mijn roep naar GoT hulp :)

[ Voor 4% gewijzigd door Verwijderd op 14-11-2005 22:27 ]


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

SMTP server response: 550 Requested action not taken: mailbox unavailable or not local
Zoek daar eens op met google.
En wat zegt die hoster?

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
'Zoek op google', heb ik net hele tijd gedaan, als ik iets nuttigs heb gemist hoor ik et graag
edit: hmm toch nog ff voor de zekerheid met precies die query, vond dit:
550 Requested action not taken: mailbox unavailable
- Indicates that your recipient's email address was not recognized by your ISP mail server or (mailbox not found or cannot access it).
Betekend dat dus dat de de locahost het email adres dat in de form gesubmit heeft niet herkend? En zo ja, wat doet men eraan?

Hoster nog niet gesproken.

Ik wou eigenlijk alleen uitsluiten dat het aan het script ligt

[ Voor 54% gewijzigd door Verwijderd op 14-11-2005 22:50 ]


Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

De functie werkt heel éénvoudig alleen je moet de juiste syntaxis aanhouden.

PHP:
1
2
3
4
5
6
7
8
$to            = 'nobody@example.com';
$subject    = 'the subject';
$message = 'hello world\n';
$headers  =  'From: webmaster@example.com' . "\n" .
                   'Reply-To: webmaster@example.com' . "\n" .
                   'X-Mailer: PHP/Mijn-X-Mailer';

mail($to, $subject, $message, $headers);


Er zijn een aantal limieten:
  • $to en $subject hebben geen \n codering
  • In de message body alleen \n gebruiken en geen \r\n
  • Messagebody per regel niet langer dan 70 karakters inclusief de terminator (\n)
Wat voorbeelden:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Een foute message body:
$message= 'Mijn bericht!\n'.
                  'Met drie regels\n'.
                  'Derde regel.';
// Vertaalt in 'Mijn bericht\nMet drie regels\nDerde regel.'

// Een goede message body:
$message= "Mijn bericht!\n".
                  "Met drie regels\n".
                  "Derde regel.";

// Vertaalt in 'Mijn bericht<CR>
//                 Met drie regels<CR>
//                 Derde regel.'

// Voor de header geldt exact het zelfde. 
// Let goed op het voorbeeld in de handleiding gebruikt \r\n, dit werkt niet goed.

// Je kan het beste het volgende doen:

function mijnmail($sMessage,$sSubject,$sTo,$sFrom,$sCC)
{
  $sHeader= "From: <".$sFrom.">\n".
                   "Reply-To: <".$sFrom.">\n".
                   "CC: <".$sCC.">\n".
                   "Sender: <".$sFrom.">\n".
                   "X-Mailer: PHP/Mijn-Mailer-1.0";

  // Strip \r and \n
  $sTo= str_replace("\n","",str_replace("\r".$sTo));
  $sFrom= str_replace("\n","",str_replace("\r".$sFrom));
  $sSubject= str_replace("\n","",str_replace("\r".$sSubject));
  $sCC= str_replace("\n","",str_replace("\r".$sCC));
  $sMessage= str_replace("\r\n","\n",$sMessage);

  // Single dot terminator elimination
  $sMessage= str_replace("\n.","\n..",$sMessage);

  // Format to seperators to ,
  $sTo= str_replace(";",",",$sTo);

  // Eliminate message length errors
  $sMessage= wordwrap($sMessage, 70, "\n");

  return @email($sTo,$sSubject,$sMessage,$sHeader);
}


Waar je tevens rekening mee moet houden is dat de meeste servers geen relay toestaan:

Voorbeeld 1:

Server heeft naam: mijnserver.mijndomein en host mijndomein.com
Jou bericht bevat TO: pietje@pietjedomein.com en FROM: noreply@noreply.com

Dit gaat fout bij een goed ingerichte server, want die staat geen Open Relay toe. Gaat dit goed dan heb je een open relay en die horen niet op internet thuis.


Voorbeeld 2:

Server heeft naam: mijnserver.mijndomein en host mijndomein.com
Jou bericht bevat TO: pietje@pietjedomein.com en FROM: noreply@mijndomein.com

Dit gaat goed bij een goed ingerichte server. Wanneer dit niet werkt dan staat de server dicht voor outbound mail.


Voorbeeld 3:

Server heeft naam: mijnserver.mijndomein en host mijndomein.com
Jou bericht bevat TO: pietje@mijndomein.com en FROM: noreply@pietjesdomein.com

Dit gaat goed bij een goed ingerichte server. Wanneer dit niet werkt dan staat de server dicht voor inbound mail.

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zeer interessante post. Maar is het relevant in mijn situatie?

punt 1: Het mailen werkt gewoon als ik het vanaf mijn computer doe, de error is dus niet consequent.

punt 2: error = Warning: mail() [function.mail]: SMTP server response: 550 Requested action not
taken: mailbox unavailable or not local in

hij rept geen wordt over relaying, al weet ik dat deze error dat wel kan betekenen

punt 3: de FROM is toch van het domein zelf? dus geen relaying? (nl $headers .= "From: info@domein.nl""

Acties:
  • 0 Henk 'm!

  • ShadowLord
  • Registratie: Juli 2000
  • Laatst online: 18-09 22:12
Je moet in ieder geval even de 'To:' uit je eigen headers halen. PHP zet dit namelijk zelf al in de headers, dus dan krijg je 2x een 'To:'. Vermoedelijk vind je SMTP server dit niet fijn.

Ook is het zo dat het formaat "Naam van Ontvanger <ontvanger@domein.tld>" niet ondersteund wordt. Nu is het zo dat dit meestal wel werkt, maar PHP vind dit eigenlijk niet leuk. Gebruik dit formaat dus niet. Ook "<ontvanger@domein.tld>" moet je niet gebruiken, want dit is hetzelfde formaat (alleen met een lege naam). Lees ook eens de docs op http://www.php.net/manual/en/function.mail.php en let ook op de 'Notes' en 'Cautions'.

You see things; and you say, "Why?" But I dream things that never were; and I say, "Why not?"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zal het is proberen zonder de To.
Maar de kern vh probleem is dat de error niet conqequent is. Volgens mij leest iedereen alleen die eerste post, en niet wat nu het probleem is. Ik zal de start post aanpassen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kickje, probleem is nog niet opgelost, en hij viel vd topiclist af O-)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
wim-bart schreef op maandag 14 november 2005 @ 23:22:
Waar je tevens rekening mee moet houden is dat de meeste servers geen relay toestaan:
Open relay heeft niet zo veel met de FROM-header te maken, enkel met de ip-range of host/domain-name van de verzendende machine. Tenzij de TO naar die server (of maildomeinen die ie afhandelt) verwijst, dan is er niet eens sprake van relaying (nouja, local relay ofzo).

Voor de topicstarter's nieuwe probleem is dat echter niet relevant.

Het lijkt er op dat de mailserver het TO-domein niet goed herkent en het adres lokaal probeert te verwerken. Een andere mogelijkheid is dat de mailserver van het TO-domein problemen heeft, maar volgens mij krijg je dan geen foutmelding bij mail(), maar eerder mailtjes terug dat het mis ging.

Wat je iig zal moeten achterhalen is bij welke domeinen het misgaat en of dat gewoon willekeurig is of steeds dezelfden.

[ Voor 7% gewijzigd door ACM op 16-11-2005 23:50 ]


  • ShadowLord
  • Registratie: Juli 2000
  • Laatst online: 18-09 22:12
Verwijderd schreef op dinsdag 15 november 2005 @ 17:16:
Ik zal het is proberen zonder de To.
Maar de kern vh probleem is dat de error niet conqequent is.
Het gebruik van de mail functie buiten de 'regels' zoals opgesteld in de docs zorgt voor een inconsequent gedrag. Zorg dus eerst dat je alles op order hebt volgens de PHP manual (let dus op \r\n etc. en probeer ook de fixes die genoemd worden op de pagina).

Als je die doorlopen hebt 'kan' het eigenlijk niet meer dat je SMTP server vreemd doet, tenzij daar iets mis mee is. Dat kun je dan weer testen door via aan normaal mail programma door die server te mailen en te kijken of je daar ook fouten mee krijgt en wanneer die nu precies optreden. Met dat soort info kunnen we je weer verder helpen.
Nu is er gewoon niet genoeg info. Wat staat er bijv. en $email? Wat is het body van je bericht? Heb je ook geprobeert het probleem te minimaliseren (dingen strippen tot het wel werkt)? Dus een body van 1 regel, een subject met 1 woord, een fixed e-mail adres, geen eigen headers meer, etc?

You see things; and you say, "Why?" But I dream things that never were; and I say, "Why not?"

Pagina: 1