e-mailfunctie
Hallo,
allereerst, Het nieuwe PHPhulp is geweldig,
Fijn dat het terug is, dan kan ik eindelijk weer eens normaal een vraag stellen. =D
Ik heb op mijn website een functie dat ik iedereen kan mailen.
Hierin werken 2 dingen niet:
- %naam% en %llnr% worden niet vervangen door degene aan wie het gemaild word.
- Hij mailt niet.
Alvast bedankt voor je hulp :)
Hier is de code, met een aantal textjes die niet belangrijt zijn ge xxx't :)
allereerst, Het nieuwe PHPhulp is geweldig,
Fijn dat het terug is, dan kan ik eindelijk weer eens normaal een vraag stellen. =D
Ik heb op mijn website een functie dat ik iedereen kan mailen.
Hierin werken 2 dingen niet:
- %naam% en %llnr% worden niet vervangen door degene aan wie het gemaild word.
- Hij mailt niet.
Alvast bedankt voor je hulp :)
Hier is de code, met een aantal textjes die niet belangrijt zijn ge xxx't :)
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<? session_start();
if($_GET['act'] == "all"){
echo 'Verzenden...';
$dbhost = "xxx";
$dbuser = "xxx";
$dbpass = "xxx";
$dbname = "xxx";
//verbinding
$db = mysql_pconnect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$db);
$result1 = mysql_query("SELECT * FROM leerlingen WHERE activ = 'test'");
$row1 = mysql_fetch_assoc($result1)
$result2 = mysql_query("SELECT * FROM mentoruur");
$row2 = mysql_fetch_assoc($result2);
$mss = $_POST['berricht'];
$rpl = array(
'%naam%' => $row1['naam'],
'%llnr%' => $row1['lln'],
'%mentdat%' => $row2['datum'],
'%mentleerl%' => $row2['leerlingen']
);
$mailmessage1 = strtr($mss,$rpl);
$mailmessage = nl2br($mailmessage1);
$message = '
<html>
<head>
</head>
<body>
'.$mailmessage.'<br>
<br>
Deze mail is verstuurd via <A HREF="www.xxx.nl">MijnH3E</A> door '.$_SESSION['llnaam'].'.
</body>
</html>
';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: '.$row1['naam'].' <'.$row1['lln'].'>' . "\r\n";
$headers .= 'From: xxx <[email protected]>';
mail("$row1['mail']", $_POST['onderwerp'], $mailmessage, $headers);
echo 'Verzonden!';
}
}elseif($_GET['act'] == "select"){
//DEZE FUNCTIE MOET IK NOG MAKEN
}else{
echo 'Er is iets fout gegaan, of er is geen opdracht binnengkomen';
?>
[/CODE]
if($_GET['act'] == "all"){
echo 'Verzenden...';
$dbhost = "xxx";
$dbuser = "xxx";
$dbpass = "xxx";
$dbname = "xxx";
//verbinding
$db = mysql_pconnect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$db);
$result1 = mysql_query("SELECT * FROM leerlingen WHERE activ = 'test'");
$row1 = mysql_fetch_assoc($result1)
$result2 = mysql_query("SELECT * FROM mentoruur");
$row2 = mysql_fetch_assoc($result2);
$mss = $_POST['berricht'];
$rpl = array(
'%naam%' => $row1['naam'],
'%llnr%' => $row1['lln'],
'%mentdat%' => $row2['datum'],
'%mentleerl%' => $row2['leerlingen']
);
$mailmessage1 = strtr($mss,$rpl);
$mailmessage = nl2br($mailmessage1);
$message = '
<html>
<head>
</head>
<body>
'.$mailmessage.'<br>
<br>
Deze mail is verstuurd via <A HREF="www.xxx.nl">MijnH3E</A> door '.$_SESSION['llnaam'].'.
</body>
</html>
';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: '.$row1['naam'].' <'.$row1['lln'].'>' . "\r\n";
$headers .= 'From: xxx <[email protected]>';
mail("$row1['mail']", $_POST['onderwerp'], $mailmessage, $headers);
echo 'Verzonden!';
}
}elseif($_GET['act'] == "select"){
//DEZE FUNCTIE MOET IK NOG MAKEN
}else{
echo 'Er is iets fout gegaan, of er is geen opdracht binnengkomen';
?>
[/CODE]
Gewijzigd op 25/05/2010 17:26:47 door Maestro Roboroads
Je mist wat accolades bij je while loop van regel 14.
Zo dus, als het ware..?
Nee, dat zal nog niet werken. Probeer eens te begrijpen wat je code doet en dan vooral de werking van strtr(). Om die array $rpl op te stellen wil je informatie uit de array $row1 en $row2 halen.
Ofwel moet je in de while loop van regel 14 dus een nieuwe array aanmaken en die gebruiken om $rpl te vormen. Ofwel, en dat is nu zo te zien makkelijker, die hele while loop verwijderen. Nu ik nog eens goed kijk, heb je die helemaal niet nodig...
Ofwel moet je in de while loop van regel 14 dus een nieuwe array aanmaken en die gebruiken om $rpl te vormen. Ofwel, en dat is nu zo te zien makkelijker, die hele while loop verwijderen. Nu ik nog eens goed kijk, heb je die helemaal niet nodig...
ik heb even de while eruitgehaald.
Zou het zo horen te kunnen, of moet er meer in veranderen.
Ik dacht dat je met while meerdere namen uit de database kon halen,
En volgens mij mailt hij nu alleen 1 iemand, waar 9op het moment) 3 de bedoeling is.
Zou het zo horen te kunnen, of moet er meer in veranderen.
Ik dacht dat je met while meerdere namen uit de database kon halen,
En volgens mij mailt hij nu alleen 1 iemand, waar 9op het moment) 3 de bedoeling is.
Aha, het gaat wel om meerdere records in die eerste query? En je wilt dus ook meerdere mailtjes versturen? Dan stonden de accolades die je in eerste instantie toegevoegd had wellicht wel goed.
Maar goed, dat is toch een kwestie van uitproberen? Vervang desnoods de mail() eerst eens door een echo waarin je bijvoorbeeld de geaddresseerde en het bericht weergeeft. Dan weet je direct of de goede informatie de mail functie in gaat...
Maar goed, dat is toch een kwestie van uitproberen? Vervang desnoods de mail() eerst eens door een echo waarin je bijvoorbeeld de geaddresseerde en het bericht weergeeft. Dan weet je direct of de goede informatie de mail functie in gaat...
het werkt nu, bedankt voor de hulp.
Nu stuit ik op een 2e probleem:
wss door de headers krijg ik dit bovenaan de mail, en word de mail niet met HTML verstuurd.
dit krijg ik bovenaan mn mail. wat ik niet wil:
Nu stuit ik op een 2e probleem:
wss door de headers krijg ik dit bovenaan de mail, en word de mail niet met HTML verstuurd.
dit krijg ik bovenaan mn mail. wat ik niet wil:
Quote:
Content-type: text/html; charset=iso-8859-1
To: xxx <xxx>
From: xxx <xxx>
Message-Id: <[email protected]>
Date: Tue, 25 May 2010 19:05:54 +0200 (CEST)
Return-Path: xxx
X-OriginalArrivalTime: 25 May 2010 17:05:57.0205 (UTC) FILETIME=[8ADE1050:01CAFC2C]
To: xxx <xxx>
From: xxx <xxx>
Message-Id: <[email protected]>
Date: Tue, 25 May 2010 19:05:54 +0200 (CEST)
Return-Path: xxx
X-OriginalArrivalTime: 25 May 2010 17:05:57.0205 (UTC) FILETIME=[8ADE1050:01CAFC2C]
Gewijzigd op 25/05/2010 19:15:57 door Maestro Roboroads
Let wel effe op dat je email injections hebt.
Dat komt goed, met die injections,
Ik heb er een wachtwoord opstaan.
(als ik begrijp zijn dat ongewenste mails, die injections)
Ik heb er een wachtwoord opstaan.
(als ik begrijp zijn dat ongewenste mails, die injections)
Gewijzigd op 25/05/2010 19:53:48 door Maestro Roboroads
Nouw, je stopt gewoon data (weliswaar uit de db, maar toch, gaat om het principe) in de email headers. Die data valideer je niet. Dat betekend dus dat je scriptje misbruikt kan worden om spam te sturen.
Ik snap dat met mail() spam verstuurd kan worden.
is er een manier om ervoor te zorgen dat hij wel gevalideerd word?
is er een manier om ervoor te zorgen dat hij wel gevalideerd word?
Gewijzigd op 25/05/2010 20:03:53 door Maestro Roboroads
De makkelijkste manier is om bijvoorbeeld swiftmailer te gebruiken. Kan je ook makkelijkere batch sendings doen.
Da's een hele aparte applicatie,
of ik begrijp het niet xD
of ik begrijp het niet xD
Gewijzigd op 25/05/2010 20:13:34 door Maestro Roboroads
Swiftmailer is een library, geen losse applicatie :p
En het scheelt heel veel werk en problemen. En het is nog gratis ook, wat wil je nog meer?
En het scheelt heel veel werk en problemen. En het is nog gratis ook, wat wil je nog meer?
Yep.
Of je kunt filter_var doen, maar die regex die erachter zit is niet helemaal correct.
Of je kunt filter_var doen, maar die regex die erachter zit is niet helemaal correct.
filter_var($row1['mail'], FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); werkt niet>
Nogsteeds de eritante header..
(geEDIT)
Nogsteeds de eritante header..
(geEDIT)
Gewijzigd op 25/05/2010 20:47:27 door Maestro Roboroads
Wat wil je dan met die var_dump doen?
Het is weggehaald, maar..
die eritante text staat nogsteeds bovenaan,
En het stukkie met "deze mail is verstuurd met <a hhref..." komt er ook niet in..
die eritante text staat nogsteeds bovenaan,
En het stukkie met "deze mail is verstuurd met <a hhref..." komt er ook niet in..
Gewijzigd op 25/05/2010 20:50:25 door Maestro Roboroads
Leesvoer
Gewijzigd op 25/05/2010 21:13:49 door - SanThe -




