mail() header problemen
op mijn site heb ik een mail scriptje.
het werkt opzich goed alleen zit ik met het probleem dat het altijd in een spam box terecht komt, BEHALVE als ik GEEN HEADERS mee geef.
dit zijn de gebruikte headers:
$headers = 'MIME-Version: 1.0
Content-Type: multipart/related; type="multipart/alternative"; boundary="'.md5(time()).'"
From: Acolyte Magic - afdeling Verkoop<[email protected]>
Sender: Acolyte Magic - afdeling Verkoop<[email protected]>
Reply-To: Acolyte Magic - afdeling Verkoop<[email protected]>
Return-Path: Acolyte Magic - afdeling Verkoop<[email protected]>
To: '.$naam.'<'.$emailadres.'>
Message-ID: <'.time().' info@'.$_SERVER['SERVER_NAME'].'>
X-Priority: 3\r
X-Mailer: PHP v'.phpversion().'
X-MSMail-Priority: Normal\n';
weet niet of het aan de server ligt of aan de extensie,
dit staat namelijk in mijn includes file met extensie .inc en als ik losse headers gebruik met \r\n of alleen \n dan worden de headers niet herkent door hotmail/gmail vandaar alles in een variable.
De mail komt in de spambox zodra ik één van de volgende headers gebruik:
From: Acolyte Magic - afdeling Verkoop<[email protected]>
Sender: Acolyte Magic - afdeling Verkoop<[email protected]>
Reply-To: Acolyte Magic - afdeling Verkoop<[email protected]>
Return-Path: Acolyte Magic - afdeling Verkoop<[email protected]>
als ik dit niet doe dan word de afzender automatisch [email protected] (de hosting service)
Komt dit door de instellingen in php.ini ???
of mis ik een header??
ik heb ooit ergens gelezen dat je je pagina ergens mee kan registeren (mx records) maar ik heb die rechten niet op de server omdat dit een shared host is.
zou een eigen ip-adres dit probleem oplossen??
Of kan iemand mij vertellen of ik dit ook met headers mee kan geven of misschien via php de ini kan overrulen ??
Code (php)
1
2
3
4
5
2
3
4
5
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: '.$naam.' <'.$email.'>' . "\r\n";
$headers .= 'From: '.$naam2.' <'.$email2.'>' . "\r\n";
$headers .= 'X-Mailer: PHP'.phpversion(). "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: '.$naam.' <'.$email.'>' . "\r\n";
$headers .= 'From: '.$naam2.' <'.$email2.'>' . "\r\n";
$headers .= 'X-Mailer: PHP'.phpversion(). "\r\n";
etc etc
Gewijzigd op 01/01/1970 01:00:00 door Arjan Kapteijn
wel als ik het in de php zelf deed maar als het in de acolyte.inc include bestand zo staat dan print ie gewoon \r\n ipv een nieuwe regel en komen de headers niet door
$headers = 'MIME-Version: 1.0';
$headers .= 'Content-Type: multipart/related; type="multipart/alternative"; boundary="'.md5(time()).'"
$headers .= 'From: Acolyte Magic - afdeling Verkoop<[email protected]>';
$headers .= 'Sender: Acolyte Magic - afdeling Verkoop<[email protected]>';
$headers .= 'Reply-To: Acolyte Magic - afdeling Verkoop<[email protected]>';
$headers .= 'Return-Path: Acolyte Magic - afdeling Verkoop<[email protected]>';
$headers .= 'To: '.$naam.'<'.$emailadres.'>';
$headers .= 'Message-ID: <'.time().' info@'.$_SERVER['SERVER_NAME'].'>';
$headers .= 'X-Priority: 3\r';
$headers .= 'X-Mailer: PHP v'.phpversion().'';
$headers .= 'X-MSMail-Priority: Normal\n';
maar dan komt in de headers van de mail in hotmail, gmail en in outlook het volgende
MIME-Version: 1.0\r\nContent-Type: multipart/related; type="multipart/alternative"; boundary="607135c0ad7040f622fe6cee9aa94034"\r\nFrom: Acolyte Magic - afdeling Verkoop<[email protected]>\r\nSender: Acolyte Magic - afdeling Verkoop<[email protected]>\r\nReply-To: Acolyte Magic - afdeling Verkoop<[email protected]>\r\nReturn-Path: Acolyte Magic - afdeling Verkoop<[email protected]>\r\nTo: 'Mark Teunissen'<'[email protected]'>\r\nMessage-ID: <'1104537600' [email protected]>\r\nX-Priority: 3\r\nX-Mailer: PHP v5.2.0\r\nX-MSMail-Priority: Normal\n
in een regel zoals je ziet en niet bij elke \r\n een nieuwe regel zoals het normaal zou gaan
maar als ik sender en from weg haal dan komt het gewoon goed aan in de inbox maar krijg ik from: [email protected]
Gewijzigd op 01/01/1970 01:00:00 door Earithramir
zo mis je een boel quotes. Ook de \r is in Email uit den boze.. veel mail-verwerkigs-software behadelen \r\n als \n\n. Hierdoor wordt een groot deel van je headers onbruikbaar omdat de email header specificatie stelt dat na de 1e lege regel geen regels meer als header gezien mogen worden.
Tevens zie ik dat je gebruik maakt van boundries. Die zijn in princiepe alleen nodig bij gebruik van bijlages e.d. Je gebruikt nog meer tags die eigenlijk totaal niet vereist zijn.. ik weet niet wat de reden is dat je die er in hebt gezet.. maar als daar een reden voor is zet ze er dan vooral terug in.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
define("LF", "\n", true);
$headers = 'To: "' . $naam . '"<' . $emailadres . '>' . LF;
$headers .= 'From: "Acolyte Magic - afdeling Verkoop" <[email protected]>' . LF;
$headers .= 'Reply-To: "Acolyte Magic - afdeling Verkoop" <[email protected]>' . LF;
$headers .= 'Return-Path: "Acolyte Magic - afdeling Verkoop" <[email protected]>' . LF;
$headers .= 'MIME-Version: 1.0' . LF;
$headers .= 'Content-Type: text/html;' . LF;
?>
define("LF", "\n", true);
$headers = 'To: "' . $naam . '"<' . $emailadres . '>' . LF;
$headers .= 'From: "Acolyte Magic - afdeling Verkoop" <[email protected]>' . LF;
$headers .= 'Reply-To: "Acolyte Magic - afdeling Verkoop" <[email protected]>' . LF;
$headers .= 'Return-Path: "Acolyte Magic - afdeling Verkoop" <[email protected]>' . LF;
$headers .= 'MIME-Version: 1.0' . LF;
$headers .= 'Content-Type: text/html;' . LF;
?>
Pas op voor spam: Zorg dat quotjes en enters in de $naam en $email variabele worden geescaped/verwijderd, anders loop je de kans dat je script misbruikt wordt voor spam.
Gewijzigd op 01/01/1970 01:00:00 door Martijn Wieringa
headers .= 'X-Mailer: PHP v'.phpversion().'';
zorg ik er voor dat mijn mails niet terecht komen in de spam box van hotmail en gmail, heb getest en dat werkt.
ook met \n alleen werkte het script niet :S
op de een of andere manier leest hij \n niet als nieuwe regel maar gewoon als text en kloppen mijn headers niet meer ...
en dit script word niet aangeroepen door een formulier maar word als order bevestiging verzonden en alle variabelen worden dus uit db gehaald, ;)
maar op een of andere manier kan ik niet werken met \n of \r
komt dit doordat het include bestand niet de extensie php heeft?
Ik heb het toen opgelost door m'n code eerst in notepad te plakken, en daarna weer terug te plakken in de editor.. was erg vaag ;)
Testje:
Code (php)
De ORD functie geeft de ASCII code van elk karakter weer.. als je i.p.v. "\n" een "\0" ziet lijd je editor mogelijk aan dezelfde bug ;)
zoek de enters... :P
ik heb dat 'ENTER' probleem nu opgelost door het zo te doen:
$headers = 'To: "' . $naam . '"<' . $emailadres . '>' ;
$headers .= '\n';
$headers .= 'From: "Acolyte Magic - afdeling Verkoop" <[email protected]>';
$headers .= '\n';
$headers .= 'Reply-To: "Acolyte Magic - afdeling Verkoop" <[email protected]>';
$headers .= '\n';
$headers .= 'Return-Path: "Acolyte Magic - afdeling Verkoop" <[email protected]>';
$headers .= '\n';
$headers .= 'MIME-Version: 1.0';
$headers .= '\n';
$headers .= 'Content-Type: text/html;';
$headers .= '\n';
vaag maar als ik de \n in de zelfde variable doe als de rest van de variable bus bij achter aan mime-version: 1.0\n dan werken ze niet...
de headers komen in ieder geval op zelfde manier binnen met de \n nu als dat ik de headers in een geheel in een variable deed.
geen verschil nog steeds komen de mails met headers in een spam folder en zonder headers komen ze gewoon in de inbox.
is dit dan toch het probleem van dat het ip-adres niet op de naam van het domein staat ?
want wat dan bij de afzender staat is de DNS-naam van de server waarop mijn site staat