[PHP] function Mail probleem

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
Zoals reeds in de titel van het topic staat. Ik heb momenteel een zeer vreemd gedragende mail functie.

Zie onderstaand stukje PHP-code:
code:
1
2
3
4
5
if (mail('iemand@hotmail.com', 'Test subject', "TEST!")){
    echo "Goed";
}else{
    echo "Fout";
}

Wanneer ik dit stukje code run om mijn webserver krijg ik als resultaat Fout. Wanneer ik het adres vervang door een niet hotmail adres, bijv. gmail/chello/etc komt er keurig goed uit.
Ik heb het inmiddels ook geprobeerd om andere webservers en daar komt altijd keurig goed te staan.

Mijn vraag aan jullie is, is er een instelling waar dit in te stellen is dat bepaalde domeinen niet mogen gebruikt worden door de standaard php mail functie? En zoja waar kan ik die vinden?

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Hotmail is 'streng' met zn headers, gebruik de search es :)

http://gathering.tweakers...D=&select_forum=#hitstart

Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
I know, probleem is alleen dat de mail nooit verstuurd wordt omdat de PHP functie False retuneerd....

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • Twan V
  • Registratie: Oktober 2001
  • Laatst online: 16-09 15:39

Twan V

...en er stralend uitzien

Is je server een Windows of *nix server? Kijk eens of er een mailserver geconfigureerd is.

PHP heeft namelijk een mailserver (Postfix is er een voor Linux) nodig om de mail te kunnen verzenden.

Blaat het niet dan schaadt het niet...
Reflex Discoshow - Het beste wat je bruiloft kan overkomen


Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
Twan V schreef op zaterdag 29 april 2006 @ 23:28:
Is je server een Windows of *nix server? Kijk eens of er een mailserver geconfigureerd is.

PHP heeft namelijk een mailserver (Postfix is er een voor Linux) nodig om de mail te kunnen verzenden.
Unix, zoals gezegd de functie retuneerd in het geval van een e-mail adres anders dan Hotmail altijd true. Alleen in het geval een hotmail adres.

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
Jacco Swart schreef op zaterdag 29 april 2006 @ 23:23:
Zoals reeds in de titel van het topic staat. Ik heb momenteel een zeer vreemd gedragende mail functie.

Zie onderstaand stukje PHP-code:
code:
1
2
3
4
5
if (mail('iemand@hotmail.com', 'Test subject', "TEST!")){
    echo "Goed";
}else{
    echo "Fout";
}

Wanneer ik dit stukje code run om mijn webserver krijg ik als resultaat Fout. Wanneer ik het adres vervang door een niet hotmail adres, bijv. gmail/chello/etc komt er keurig goed uit.
Ik heb het inmiddels ook geprobeerd om andere webservers en daar komt altijd keurig goed te staan.

Mijn vraag aan jullie is, is er een instelling waar dit in te stellen is dat bepaalde domeinen niet mogen gebruikt worden door de standaard php mail functie? En zoja waar kan ik die vinden?
Misschien is mijn vraag stelling onjuist.

code:
1
2
3
4
5
6
7
8
9
10
if (mail('iemand@hotmail.com', 'Test subject', "TEST!")){
    echo "Goed1";
}else{
    echo "Fout1";
}
if (mail('iemand@gmail.com', 'Test subject', "TEST!")){
    echo "Goed2";
}else{
    echo "Fout2";
}


Wanneer ik het bovenstaande stukje php code run is het resultaat

Fout1
Goed2

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

Verwijderd

Stuur vanaf een bestaand mailprogramma een mailtje naar een box die de functie heeft om de mailheaders te bekijken (squelmail / outlook / whatever). En verstuur er een via de php functie naar het zelfde adres. Kijk welke headers er via PHP ontbreken, en voeg deze toe dmv de header functie (mail(adr,subj,data,headers)).

edit:
Deze headers verstuur ik altijd, komt overal zonder problemen aan.
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
# Common Headers
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
  $eol="\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
  $eol="\r";
} else {
  $eol="\n";
} 

$now = md5(time().$subject);

$headers .= 'From: site Automailer <noreply@site.nl>'.$eol;
$headers .= 'Reply-To: site Beheerder <info@site.nl>'.$eol;
$headers .= 'Return-Path: site <return_catcher@site.nl>'.$eol;    // these two to set reply address
$headers .= "Message-ID: <".$now.".site.scriptmailer@".$_SERVER['SERVER_NAME'].">".$eol;
$headers .= "User-Agent: site-MailerScript/1.0".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters
$headers .= "X-Mail-Sender: site mail script".$eol;

# Boundry for marking the split & Multitype Headers
$mime_boundary=md5(time());
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol;
$headers .= "X-Priority: 3 (Normal)".$eol;
$headers .= "Importance: Normal".$eol;

[ Voor 65% gewijzigd door Verwijderd op 30-04-2006 19:32 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Als ik zo kijk moet je het probleem niet zoeken bij php, maar bij de instellingen van je mail-server. Blokkeert die niet ergens alle e-mails die naar een hotmail-adres gaan.

Probeer eens handmatig een mailtje te sturen en kijk wat je terugkrijgt. (moet uiteraard wel gebeuren van de server waar het php-script zelf op draait, niet van buitenaf via die mailserver).

Even heel simpel php-scriptje om het te testen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$rcpt = "een hotmailadres hier";
$sock = fsockopen("localhost", "25");
if (!is_resource($sock)) die("Can't connect");

fwrite($sock, "HELO testapp\r\n");
echo fgets($sock) . "<br>\n";
fwrite($sock, "MAIL FROM: <test@php.net>\r\n");
echo fgets($sock) . "<br>\n";
fwrite($sock, "RCPT TO: <{$rcpt}>\r\n");
echo fgets($sock) . "<br>\n";
fwrite($sock, "DATA\r\n");
echo fgets($sock) . "<br>\n";
fwrite($sock, "From: test <test@php.net>\r\nTo: testje <{$rcpt}>");
fwrite($sock, "\r\nSubject: test\r\n\r\nTestje\r\n.\r\nQUIT\r\n");
echo fgets($sock) . "<br>\n";

while ($d = fread($sock, 1024)) {
  echo nl2br($d);
}
fclose($sock);
?>


@KingOfDos: het gaat fout bij het sturen, niet (misschien ook wel, maar dat ziet php niet) bij het ontvangen.

Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
Toevallig net dezelfde ingeving gehad. Wanneer ik direct inlog via SMTP gaat het goed tot de

RCPT TO: < abcdef@hotmail.com > --> 550 5.2.1 ... Mailbox disabled for this recipient

Terwijl de mailbox keurig actief is. Vervolgens nog wat hotmail adressen geprobeerd, maar het blijft mislopen met dezelfde melding...

(Doe ik een mailtje naar chello/gmail/lycos/etc gaat het allemaal goed???) Alleen hotmail en yahoo blijven iedere medewerking weigeren.

Plzzz help |:(

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Ik kan je wel zeggen waar de fout ongeveer zit, maar niet hoe je het op moet lossen.

Het probleem is dat in de config van je mailserver alle hotmail en yahoo-adressen zijn geblokkeerd/gedisabled.

Mailbox disabled for this recipient > Mailbox uitgeschakeld voor deze ontvanger.

Ik raad je aan om eens te zoeken waar in de config een lijst staat van geblokkeerde ontvangers. Daarin moeten yahoo en hotmail voorkomen (makkelijk zoeken met grep ;)).

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Er zijn ondertussen al heel wat topics voorbij gekomen over hoe de mail() functie te gebruiken. Ook is er nu al een aantal keer gezegd dat je de juiste headers zult moeten gebruiken anders zal bijv. hotmail de mail gewoon weigeren (en dat merk je blijkblaar ;) ).

Dus heb je nu al geprobeerd om die headers toe te voegen (ja, die zijn echt belangrijk) en lukt het je dan nog steeds niet?
Shadowman schreef op zondag 30 april 2006 @ 22:17:
Ik kan je wel zeggen waar de fout ongeveer zit, maar niet hoe je het op moet lossen.

Het probleem is dat in de config van je mailserver alle hotmail en yahoo-adressen zijn geblokkeerd/gedisabled.

Mailbox disabled for this recipient > Mailbox uitgeschakeld voor deze ontvanger.

Ik raad je aan om eens te zoeken waar in de config een lijst staat van geblokkeerde ontvangers. Daarin moeten yahoo en hotmail voorkomen (makkelijk zoeken met grep ;)).
De "550 - Mailbox disabled for this recipient" is een melding die de mailservers van hotmail zelf teruggeven. Dat is dus niet aan te passen door een lijst van geblokkeerde ontvangers op je eigen server aan te passen ;)

[ Voor 51% gewijzigd door Creepy op 30-04-2006 22:49 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Creepy schreef op zondag 30 april 2006 @ 22:47:
De "550 - Mailbox disabled for this recipient" is een melding die de mailservers van hotmail zelf teruggeven. Dat is dus niet aan te passen door een lijst van geblokkeerde ontvangers op je eigen server aan te passen ;)
Als het van de mailserver van hotmail zou komen, is het dan niet vreemd dat je die reactie al direct krijgt van je eigen mailserver? Als het goed is wacht de mailserver die je gebruikt met het sturen van een bericht tot het bericht helemaal binnen is / klaar staat in de queue voor het verzenden, dat gebeurd niet realtime. Als dit bericht van de mailserver van hotmail zou komen dan zou je een bounce-mailtje in je mailbox krijgen.

recipient > ontvanger, niet degene die het verstuurd (ik mag overigens toch wel aannemen dat de hotmail-servers berichten accepteren die voor een hotmailaccount zijn ;)).

Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
Creepy,

ik heb reeds ook de headers geprobeerd. Echter het probleem blijkt niet bij de standaard php mail functie te zitten maar bij de smtp server op mijn webserver. Zoals shadowman hierboven ook al aan gaf, waarschijnlijk worden de @hotmail.com en @yahoo.com mail adressen lokaal, dus door mijn webserver z'n smtp server's config geblock. Zie mijn eerdere reply met fout code.
(het kan dus niet liggen aan de headers aangezien ik die nog geen eens kan sturen via het standard SMTP protocol.)

Ik denk dan ook dat er niks anders opzit dat ik morgen even een belletje doe aan mijn webhoster en vraag waarom deze worden geblockd. (Of iemand moet natuurlijk als nog de oplossing hebben...)

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 20-09 07:05
Update:

er bestond inderdaad lokaal een blocklist in de local smtp server. De provider heeft de 2 regels (block @hotmail.com en block @yahoo.com) verwijderd en het werkt weer als een zonnetje.

Allen bedankt voor de reacties

www.ya-calendar.com - Gratis online agenda

Pagina: 1