[PHP] mail probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Het versturen van een simpel php mailtje met de mail() functie lijkt goed te werken bij mij.
Afhankelijk van de ontvanger komt de mail wel of niet aan. De mail functie geeft wel in alle gevallen true terug.

Hier mijn code voor het versturen van de mail

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if ($action == "submit")    
{       
foreach($input as $key => $value) 
$input[$key] = strip_tags($value);      
    
$mailsubject = "Ingevuld contactformulier via website";
$mailheaders = "From: Bedrijfsnaam <info@bedrijfsnaam.nl>\n";
$mailheaders .= "Cc: \n";
$mailheaders .= "Bcc: \n";
$mailheaders .= "Reply-To: ".$input['email']." \n";
$mailheaders .= "X-Mailer: PHP3 Mail Function";

$msg .= "\n";
$msg .= $input['omschrijving'] . "\n";
$msg .= "\n";       
    
    $msg = wordwrap($msg, 75);

    if(mail($input['email'], $mailsubject, $msg, $mailheaders))
    {
        echo "de mail is verstuurd!";
    }           
    
}


en het formulier zelf:

code:
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
<table cellspacing="0" class="datatable" border="0">
<thead>
<tr>
<th class="titel" colspan="2">E-mail</th>
</tr>
</thead>
<tbody>

<tr>
<td class="odd" width="225">
  Naam
</td>
<td class="odd" width="480">
  <input type="text" class="text" value='<?= $row[naam]; ?>' name="input[naam]" id="title" size="40" />
</td>
</tr>                     
<tr>
<td class="odd" width="225">
  E-mail
</td>
<td class="odd" width="480">
  <input type="text" class="text" value='<?= $row[email]; ?>' name="input[email]" id="title" size="40" />
</td>
</tr>                     

<tr>
<td class="odd" width="225">
 Bericht
</td>
<td class="odd" width="480">
  <textarea name="input[omschrijving]"></textarea>
</td>
</tr>


</tbody>
</table>


als de mail niet aankomt krijg ik deze foutmelding:

@40000000427b21251f9ad00c delivery 766: deferral: xx.xxx.xxx.xx_does_not_like_recipient./
Remote_host_said:_450_<anonymous@hosted-
by.quantis.nl>:_Sender_address_rejected:_Domain_not_found/Giving_up_on_xx.xxx.xxx.xx./
@40000000427b21251f9c7204 status: local 0/10 remote 0/20

De vraag is : hoe komt dit en hoe zorg ik dat de mail overal wel netjes geaccepteerd wordt?

xs4all accepteerd hem bijvoorbeeld ook niet..

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Heb je al gezocht op GoT? Ik kan me bijna niet voorstellen dat hier niets bruikbaars tussen staat. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Er wordt ergens een soortement van string in die mail gegenereerd (bovenin de bron dacht ik) en als deze wat rare zaken vertoont accepteerd XS4ALL hem bijvoorbeeld niet.

Iig zoiets was het dacht ik. Heb ik ook eens gehad. Even zoeken, kun je best vinden.

Jij bent misschien belangrijk, maar ik ben aardig ;)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
heb uiteraard gezocht, maar het is me tot op heden nog niet gelukt

Acties:
  • 0 Henk 'm!

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Verwijderd schreef op woensdag 25 mei 2005 @ 22:21:
heb uiteraard gezocht, maar het is me tot op heden nog niet gelukt
Snap ik, was er ook even zoet mee. Heel irritant...... ik kan alleen net meer reproduceren wat het probleem was. (krijg je met 2 dagen niet slapen en maar proggen :))

edit:
Weet het al weer........ zit in je headers...... uhm ik zal eens kijken of ik nu bij die code kan, staat namelijk volgens mij op een stil liggende HD...... (die ik nog steeds niet gemount heb :s)

[ Voor 25% gewijzigd door BacardiBreezer op 25-05-2005 22:24 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 20:47
Kijk eens in de headers van een e-mailtje dat door je script wordt verstuurd, en kijk welke headerregel daarvan overeenkomt met het anonymous@ mailadres uit je logs. Vervolgens even testen of je deze ook kan aanpassen/opnemen in je $mailheaders.

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Ik gebruik de volgende samengestelede header. En heb daarmee geen problemen. De code is uit een functie gehaald dus even wat aan variabelen toevoegen.

PHP:
1
2
3
4
5
6
7
8
9
$admin_naam = "Volledige naam";
$admin_email = "info@somedomain.com";

$header  = "From: ".$admin_naam."<".$admin_email.">\n";
$header .= "Reply-To: <".$admin_email.">\n";
$header .= "X-Sender: ".$admin_naam."<".$admin_email.">\n";
$header .= "X-Mailer: mailer-PHP4\n";
$header .= "X-Priority: 3\n";
$header .= "Return-Path: <".$admin_email.">\n";


Verder lijkt het er op dat de sender niet wordt geaccepteerd dus kijk een met wat echo's welek waarden er nu daadwerkelijk worden gevuld.

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 25 mei 2005 @ 22:21:
heb uiteraard gezocht, maar het is me tot op heden nog niet gelukt
xs4all is heel erg gedreven op goede headers, en bij jouw script zijn er een aantal niet volgende de standaard voor zover ik die ken.
PHP:
1
$mailheaders = "From: Bedrijfsnaam <info@bedrijfsnaam.nl>\n";
Voor zover ik weet moeten er om Bedrijfsnaam dubbele quotes staan volgens de standaard. Verder moet een header-regel volgens diezelfde standaard afgesloten worden met \r\n, en niet met \n. Bovendien zijn je Bcc- en Cc headers leeg, ik kan me voorstellen dat dat ook niet mag. Laat die dus gewoon weg.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

dajappie schreef op woensdag 25 mei 2005 @ 22:25:
Kijk eens in de headers van een e-mailtje dat door je script wordt verstuurd, en kijk welke headerregel daarvan overeenkomt met het anonymous@ mailadres uit je logs. Vervolgens even testen of je deze ook kan aanpassen/opnemen in je $mailheaders.
Dat kan !!! Het is namelijk zo dat XS4ALL deze vereist om een mail te ontvangen meen ik.

edit:


* BacardiBreezer zwaait naar boven :*)

[ Voor 6% gewijzigd door BacardiBreezer op 25-05-2005 22:28 ]

Jij bent misschien belangrijk, maar ik ben aardig ;)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
okay, bedankt!

ik ga het nu allemaal testen en laat nog van me horen

Acties:
  • 0 Henk 'm!

  • Blorgg
  • Registratie: Juni 2001
  • Niet online
De reden dat je mail (terecht) niet geaccepteerd wordt is omdat je het verstuurd alsof het spam is. Zeker in het verleden werd een groot percentage van alle spam verstuurd met valse afzender adressen of afzender adressen van niet bestaande domeinen.

Een goed geconfigureerde mailserver zal controleren of het IP van waar het mailtje verstuurd wordt, ook overeen komt met wat in het MX record van het betreffende domein staat. Ofwel, als ik vanaf mijn thuisverbinding een mailtje stuur met als afzender billgates@microsoft.com dan zal die op een goede mailserver geweigerd worden omdat mijn IP niet verantwoordelijk is voor het afhandelen van de mail voor microsoft.com

Wat je dus eigenlijk moet doen is email versturen via de mailserver die verantwoordelijk is voor het domein waarvoor je mail stuurt. Doe je dit dan zal je mail in de meeste gevallen gewoon geaccepteerd worden mits je headers verder in orde zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb daar even wat dummy informatie in gezet, maar ik verstuur vanaf een ip waar ook de domeinnaam gehost is dus dat kan het niet zijn volgens mij

Acties:
  • 0 Henk 'm!

  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

Verwijderd schreef op woensdag 25 mei 2005 @ 22:39:
ik heb daar even wat dummy informatie in gezet, maar ik verstuur vanaf een ip waar ook de domeinnaam gehost is dus dat kan het niet zijn volgens mij
Je header....... daar wordt op getjekt..... iig die "string".

Jij bent misschien belangrijk, maar ik ben aardig ;)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goed, lag inderdaad aan de headers. Gebruikte deze al een behoorlijke tijd en ze zullen inmiddels behoorlijk verouderd zijn. Met onderstaande code werkt het nu prima:
ripexx schreef op woensdag 25 mei 2005 @ 22:27:
Ik gebruik de volgende samengestelede header. En heb daarmee geen problemen. De code is uit een functie gehaald dus even wat aan variabelen toevoegen.

PHP:
1
2
3
4
5
6
7
8
9
$admin_naam = "Volledige naam";
$admin_email = "info@somedomain.com";

$header  = "From: ".$admin_naam."<".$admin_email.">\n";
$header .= "Reply-To: <".$admin_email.">\n";
$header .= "X-Sender: ".$admin_naam."<".$admin_email.">\n";
$header .= "X-Mailer: mailer-PHP4\n";
$header .= "X-Priority: 3\n";
$header .= "Return-Path: <".$admin_email.">\n";


Verder lijkt het er op dat de sender niet wordt geaccepteerd dus kijk een met wat echo's welek waarden er nu daadwerkelijk worden gevuld.
Bedankt!

over en sluiten maar.

Acties:
  • 0 Henk 'm!

  • Blorgg
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op woensdag 25 mei 2005 @ 22:39:
ik heb daar even wat dummy informatie in gezet, maar ik verstuur vanaf een ip waar ook de domeinnaam gehost is dus dat kan het niet zijn volgens mij
Dat is niet per definitie waar :)

Voor een domein het je een zogenaamd A record. Dit record verwijst naar een IP adres en kan voor van alles en nogwat gebruikt worden. Vervolgens heeft bijna elke website een cname of alias 'www' zodat je naar www.domein.nl kun gaan met je browser. Email wordt verstuurd naar zogenaamde MX records. Elk van deze records kan naar de originele A record verwijzen, maar ze kunnen net zo goed ergens anders heen wijzen.

Een goede 'mailserver' zal bv altijd meer dan 1 server hebben die de mail kan ontvangen. Deze servers hebben dan allebei een MX record, maar de records hebben dan een verschillende prioriteit. Gaat er vervolgens eentje plat dan wordt de mail gewoon opgevangen door de andere en later afgeleverd. Bovendien draaien een mailserver en webserver meestal niet op 1 en dezelfde server.

Maar goed. De overgrote meerderheid van de mailservers is nog steeds slecht geconfigureerd dus meestal zal je email toch wel aankomen. Het is alleen jammer als de mail aan moet komen en deze niet geaccepteerd wordt vanwege bovengenoemde verhaal :)

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Blorgg schreef op woensdag 25 mei 2005 @ 22:34:
Een goed geconfigureerde mailserver zal controleren of het IP van waar het mailtje verstuurd wordt, ook overeen komt met wat in het MX record van het betreffende domein staat. Ofwel, als ik vanaf mijn thuisverbinding een mailtje stuur met als afzender billgates@microsoft.com dan zal die op een goede mailserver geweigerd worden omdat mijn IP niet verantwoordelijk is voor het afhandelen van de mail voor microsoft.com
Dit verhaal klinkt me nogal kolder in de oren. Alle providers die ik ken hebben een SMTP server die mailen alleen toestaat vanaf ip-adressen binnen het eigen domein. Welk afzenderadres er vervolgens in dat mailtje staat maakt niets uit. Zou ook gek zijn want anders zou je via je chello-, @home-, planet- verbinding je universiteitsmail-adres niet kunnen gebruiken. Ik heb Bill ook nooit horen klagen wanneer ie zijn laptop in mijn thuisnetwerkje prikt ;)

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • woekele
  • Registratie: Juni 2002
  • Niet online

woekele

woekele

Blorgg heeft het ook de SMTP-server van de ontvanger, niet die van de zender :o

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Aarsbuds0r schreef op donderdag 26 mei 2005 @ 01:20:
Blorgg heeft het ook de SMTP-server van de ontvanger, niet die van de zender :o
Die mag die aanname ook niet doen. Ik mail zelf via smtp.demon.nl allerhande meuk van tig mailadressen waaronder m'n Tweakers.net adres. De Demon-server accepteert relaying mail (buiten het Demon-domain dus) van mij omdat ik binnen hun range van trusted IP's val. Als ik vervolgens vanuit m'n T.net adres mail naar iemand van Chello, neemt de Demon-server contact op met de MX-servers van Chello.nl, en is er dus geen enkele mogelijkheid om te controleren of ik wel of niet geautoriseerd ben om namens Tweakers.net te mailen. Hij moet de mail echter wel accepteren.

Dit is een van de (vele) fundamentele lekken in het SMTP-protocol overigens, het absolute gebrek aan authentication dat er in zit.

[ Voor 3% gewijzigd door curry684 op 26-05-2005 02:12 ]

Professionele website nodig?

Pagina: 1