is de mail() functie 100% te vertrouwen?
onlangs zelf een scriptje geschreven dat een mailtje moet verzenden naar mijjn contactenlijst. Nu merk ik dat niet iedereen die mail krijgt, nochtans geedft de mail() functie altijd 1 terug, wat toch zou moeten betekenen dat de mail aanvaard is door de ontvangende mailserver? Ben me ervan bewust dat dit inderdaad nog geen garantie is dat hij ook daadwerkelijk afgeleverd wordt, en dat de kans bestaat dat de ontvangende mailserver nog faalt de mail te bezorgen. Maar vermits het aantal mensen die de mail niet krijgt zodanig groot is, ondanks de positieve return vd mailfunctie, begin ik te denken dat de fout niet bij de ontvangende mailserver ligt maar misschine wel bij de mijne. Heeft hier nog al iemand problemen mee gehad of heeft er iemand een idee of er betere manier bestaat die meer zekerheid biedt?
Ben zeker niet op zoek naar een kant en klaar mailinglistprogramma, want daarvoor heb ik al teveel werk in het mijne gestoken ;) maar 'k vroeg me toch waarom die functie zoveel faalt.
Bedankt!
Ik raad je aan om inplaats van de mail() functie de phpmailer class te gebruiken. Je hoeft hiervoor eigenlijk niks aan te passen (lees, minder dan 5 minuten werken) en ook die geeft gewoon true of false terug. Echter... die spreekt wat directer/correcter met de mailserver. Je kan dan ook een gebruikersnaam/wachtwoord opgeven enzo... net zoals in je outlook.
Denk niet dat ik die class kan gebruiken, mijn server ondersteund nog geen php5 :(
Dit zijn de headers die ik meestuur :
$headers = "From:mijn naam <mijn email>\r\n";
$headers.= "Reply-To: mijn email\r\n";
$headers.= "Content-Type: text/html; \r\n charset=\"iso-8859-1\"\r\n";
Is er nog andere info die ik in de headers moet steken? Denk niet dat het probleem daar aan zal liggen want soms wordt de mail wel correct afgeleverd en soms niet, met dezelfde header info...
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$headers = 'MIME-Version: 1.0'. "\r\n";
$headers .= 'Content-type: text/plain; charset=iso-8859-1'. "\r\n";
$headers .= 'X-Priority: 3'. "\r\n";
$headers .= 'X-MSMail-Priority: Normal'. "\r\n";
$headers .= 'X-Mailer: PHP/'.phpversion().''."\r\n";
$headers .= 'From: '.$vannaam.' <'.$vanemail.'>'."\r\n";
$headers .= 'Content-type: text/plain; charset=iso-8859-1'. "\r\n";
$headers .= 'X-Priority: 3'. "\r\n";
$headers .= 'X-MSMail-Priority: Normal'. "\r\n";
$headers .= 'X-Mailer: PHP/'.phpversion().''."\r\n";
$headers .= 'From: '.$vannaam.' <'.$vanemail.'>'."\r\n";
Eigenlijk zou je ook het ipadres moeten meesturen, die wilt google graag hebben...
Gewijzigd op 01/01/1970 01:00:00 door Arjan Kapteijn
bedankt ik ga dit eens bekijken en wat uitdokteren.
Merci!
$headers .= 'Content-type: text/plain; charset=iso-8859-1'. "\r\n";
heb naar twee adressen gestuurd : een gewoon hotmail adres en een telenet (pandora) adres. Als de content type text/plain is, komt deze op beide account normaal terecht. als ik echter de content type als text/html zet dan komt hij enkel op mijn hotmail adres terecht. Heeft iemand een idee hoe ik dit kan oplossen?
bedankt!
Gewijzigd op 01/01/1970 01:00:00 door mic
de mail() functie is te vertrouwen. Het is alleen niet 100% zeker dat de email aankomt. De kan onderweg nog vanalles fout gaan terwijl de functie succesvol is uitgevoerd.
demail functie is wel goed, maar of de mail aankomt ligt meer bij je mailserver dan je script
Als de headers niet geheel correct zijn komt de mail vaak tussen de spam terecht.
niet bepaald, spam lvl krijg je alleen omhoog door een ip of host te faken, bij foutive headers komt de mail niet aan, of met bijv verkeerd of geen replyto
$headers .= 'Content-type: text/html; charset=iso-8859-1'. "\r\n";
Misschien ligt het aan een combinatie van twee headrs ofzo die niet samen horen?
$headers .= 'Content-type: text/html; charset=utf-8'.
Ik denk dat dit te maken heeft met het azender adres van de mail server en het adres dat opgegeven is als verzeder.
heb al uitvoerig getest en gezocht op internet, zonder resultaat. Het ligt gewoon aan dit ene lijntje :
'Content-type: text/plain; charset=iso-8859-1'. "\r\n";
zo komt hij perfect toe (maar niet in html), en met onderstaande header lukt het niet :
'Content-type: text/html; charset=iso-8859-1'. "\r\n";
Moet er misschien nog extra info bij als je html mails wilt versturen?
tutorial. Zie vooral pagina 3 voor het verzenden van HTML mails.
Of zie deze het probleem lag blijkbaar niet echt aan de headers maar aan de html code. Als ik de content type header naar text/plain veranderde deed het probleem zich niet voor, omdat de html code dan als gewone tekst aanzien werd. Maar nu zit ik dus met het volgende heel bizarre probleem :
ik kan blijkbaar de volgende code niet versturen :
<a href=http://www.jouwsite.nl><img src="http://www.jouwsite.nl/foto.jpg" width="100" height="100" border="0"></a>
terwijl volgende code geen probleem veroorzaakt :
<a href=http://www.jouwsite.nl> Dit is een gewone tekstlink </a>
Dus een link aan een figuur gekoppeld zorgt voor een conflict??? Ik heb dit uitvoerig getest en het is echt geen toeval. Alle mails met de link/figuur komen niet toe en alle mails met een gewone tekstlink komen wel toe!
Dit is echt bizar.....
wat problemen kan geven bij een MIME html mail, zijn quotejes en het = teken, dat is namelijk gereserveerd.
Het versturen van HTML mails naar minder dan 100 personen tegelijk is gratis.
Zelf heb ik de Personal edition. Deze verstuurd naar oneindig personen. Het is echt zo makkelijk in gebruik en het is veel betrouwbaarder dan de mail() van PHP, zeker als je het hebt over HTML emails.
Edit:
Je zegt
******************
Ben zeker niet op zoek naar een kant en klaar mailinglistprogramma, want daarvoor heb ik al teveel werk in het mijne gestoken ;) maar 'k vroeg me toch waarom die functie zoveel faalt.
******************
Waarom het wiel opnieuw uitvinden als je een prima kant en klaar programma hebt? Of wil je gewoon kennis opdoen?
Gewijzigd op 01/01/1970 01:00:00 door Barman V
Als je het wiel hebt uitgevonden heb je weer iets geleerd. Je kan een wiel maken, en ben je misschien wel geinspireerd en vind je nog meer dingen uit.