Hallo,

ik heb een vraagje over gegevens in variable stoppen.

ik ben nu best een tijd bezig met mijn mailing script en alles gaat prima.
erger nog het heeft heel kort gewerkt....

bij het mail script kan ik een vast email adres in kan vullen. (dan werkt hij perfect)
waar ik nu tegen aan loop is dat ik bij het mail script een email adres uit de database wil halen en deze gebruiken om naar te mailen.

ik heb de database gegevens al uitgelezen en met een echo kunnen posten en dan krijg ik het goede mail adres dus dat zou moeten werken.

nu een stukje code voor de uitleg :


$gegevens['email'] = "[email protected]";		// Webmaster E-mail


nu wil ik dus in de $gegevens['email'] de gegevens zetten van $row['usermail']
hoe ga ik dit doen?
dit is hoe ik dacht dat het moest maar dat werkte niet.


$gegevens = $row['usermail'];


kan iemand een zetje de goede kan op geven?
Of anders moet je gewoon $cfg['email'] = "[email protected]"; doen.
Ik vond je vraag niet geheel duidelijk of je nou de variabelen weg wou hebben, of er een waarde in wou krijgen.
sorry voor de onduidelijkheid.

hier nogmaals de (ik hoop) betere uitleg.

mijn host meld dus dat als je via de browser mailt met een email adres wat niet van mijn site is.
dat er dan een maximum van 20 aan zit.

ik heb dus $cfg['email'] dit is het email adres van de user waar het heen gezonden wordt.
met echoen zie ik dat de waarde klopt.

alleen het email adres eindigd bijvoorbeeld op gmail.com
dit mag je maximaal 20x in 24 uur verzenden op deze manier bij mijn host. (blijkbaar)

dit verklaard dat ik wel naar een user kan mailen die een email adres van mijn eigen site heeft.
als ik niet meer kon mailen (na de 20x) dan kon ik alleen wel nog naar deze ene user mailen met het mail adres van mijn site en niet meer naar alle andere users met bijvoorbeeld een gmail adres.


of terwijl de mail moet altijd vanuit mijn website mail adres verzonden worden en als reply mag er wel een ander email adres in staan.

ik denk dat het opgelost is dit ga ik even een tijdje testen.
Marcel sauer op 16/03/2015 22:06:16

de mail moet altijd vanuit mijn website mail adres verzonden worden en als reply mag er wel een ander email adres in staan.


Dit klopt inderdaad.
grrr nu krijg ik hem niet naar een email adres gestuurd.

ik gebruik mijn eigen host email adres ($wm_email) als verzend adres en gebruik de $ontv_user_email als ontvangst adres.
<?php 
$wm_email = "[email protected]";

$ontv_user_email = $dnn['user_email'];		// ontvanger user E-mail 

// Headers
            $headers = "From: \"Contact Formulier\" <".$wm_email.">\r\n"; 
            $headers .= "Reply-To: \"".$wm_naam."\" <".$wm_email.">\n";
            $headers .= "Return-Path: Mail-Error <".$wm_email.">\n";
            $headers .= "MIME-Version: 1.0\n";
            $headers .= "Content-Transfer-Encoding: 8bit\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\n";


// Bericht
			$massage = "ID: ".$cfg['id']."		\n";
            $message .= "Naam: ".$naam."        \n";
            $message .= "E-mail: ".$wm_email."     \n";
			$message .= "Onderwerp: ".$onderwerp."     \n";
            $message .= "Bericht:\n".$bericht_wrap."     \n ";
            $message .= "               \n ";
            $message .= "Datum: ".date("d-m-Y H:i:s")." \n";
            $message .= "------------------------------------------------------- \n ";
            $message .= "IP: ".$ip."                    \n ";
            $message .= "Host: ".$host."                \n ";


            mail($ontv_user_email,$onderwerp,$message,$headers);
?>


wat doe ik fout?
als ik :

<?php 
mail($ontv_user_email,$onderwerp,$message,$headers);
// verander naar 
mail($wm_email,$onderwerp,$message,$headers);
// dan stuurt hij wel een mail naar mijn host adres
?>
Wat staat er in $ontv_user_email?

En test even.

<?php
if(mail(...))
{
echo 'OK';
}
else
{
echo 'NIET OK';
}
?>
Kijk eens in de bron van je ontvangen mail?
Volgens mij moet elke header eindigen op "\r\n" in plaats van "\n" anders worden headers mogelijk genegeerd.

Of gebruik enkel "\n", maar geen combinatie van beide.

Daarnaast zou je Return-Path in "simple form" moeten staan, dus in plaats van "[naam] <[adres]>" zou dit enkel "[adres]" moeten zijn. In sommige bronnen wordt ook aangeraden om je Return-Path mee te geven als 5e parameter in je mail()-aanroep middels "-f[adres]" (zonder spatie tussen -f en [adres]).

Of gebruik gewoon een library voor het verzenden van mail, daar is al dit soort kennis al in verwerkt... hoef je zelf niet te lopen prutten in mail-headers.

En een rare restrictie van de hoster (mogelijk om spam tegen te gaan?). Je zou:
- of kunnen vragen of ze deze restrictie voor jou opheffen
- of alle afzend-adresssen (from, reply-to, return-path) kunnen aanpassen naar een adres op jouw domein

EDIT: spelling
ik heb alle headers aangepast of allemaal \r\n of allemaal \n maar werkt niet.

dit stukje begrijp ik niet helemaal kan je dit nader uitleggen?

Daarnaast zou je Return-Path in "simple form" moeten staan, dus in plaats van "[naam] <[adres]>" zou dit enkel "[adres]" moeten zijn. In sommige bronnen wordt ook aangeraden om je Return-Path mee te geven als 5e parameter in je mail()-aanroep middels "-f[adres]" (zonder spatie tussen -f en [adres]).


bedoel je dat dit dan zo zou moeten?

<? mail($ontv_user_email,$onderwerp,$message,$headers,-f[adres]);  ?>

Reageren