Mailtjes versturen werkt niet
Bedankt voor jullie hulp!
Het laatste probleem is dat ik een lijst met bijv. 100 emails niet uit de database wil halen,
Maar gewoon in een invoerveld wil kunnen gooien.
Gewijzigd op 06/05/2013 11:27:38 door patrick cos
Op welke manier vul je die in en scheid je die van elkaar?
- Aar - op 06/05/2013 11:34:42:
Op welke manier vul je die in en scheid je die van elkaar?
Ik had een invoerveld gemaakt, het scheiden van de emails ben ik nog niet precies over uit. kan hier ook niet echt een voorbeeld van vinden.
Ik heb even de orginele code hieronder geplakt, omdat mijn eigen creatie nog niet goed is.
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?
include("inc/db.php");
$mail_id = "";
$mail_name = "";
$mail_text = "";
if ($res) $res = "<p style=\"color:#FF0000;font-weight:bold;\">$res</p>";
$SubmitButton = "Nieuw";
if ($id){
$SubmitButton = "Opslaan";
$Verwijderbutton = "<input name=\"Verwijder\" type=\"Submit\" value=\"Verwijder\" class=\"delete\" />";
$query =
"SELECT
mail_id,
mail_name,
mail_text
FROM
cs_mail
WHERE
mail_id = $id
LIMIT 1
";
$result = mysql_query($query)or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$mail_id = $row["mail_id"];
$mail_name = ($row["mail_name"]);
$mail_text = ($row["mail_text"]);
}
}
$query = "SELECT COUNT(*) AS nieuwsbrief FROM cs_users
WHERE newsletter = 'Y' AND user_removed='N';";
$result = mysql_query($query)or die(mysql_error());
$nieuwsbrief = mysql_fetch_row($result);
$query = "SELECT COUNT(*) AS alle FROM cs_users
WHERE user_removed='N';";
$result = mysql_query($query)or die(mysql_error());
$alle = mysql_fetch_row($result);
$query = "SELECT COUNT(*) AS tweakers FROM cs_users
WHERE newsletter = 'Y' AND user_removed='N' AND cp_naam LIKE '%patrick%';";
$result = mysql_query($query)or die(mysql_error());
$tweakers = mysql_fetch_row($result);
$query = "SELECT COUNT(*) AS alle_tweakers FROM cs_users
WHERE user_removed='N' AND referer LIKE '%tweakers.net%';";
$result = mysql_query($query)or die(mysql_error());
$alle_tweakers = mysql_fetch_row($result);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl" >
<head>
<title>Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="/beheer/inc/3col_leftNav.css" rel="stylesheet" type="text/css" />
<style type="text/css">
html,body {
overflow-x:hidden;
}
</style>
<script type="text/javascript">
_editor_url = "/beheer/xinha_060327/";
_editor_lang = "nl";
</script>
<script type="text/javascript" src="/beheer/xinha_060327/htmlarea.js"></script>
<script type="text/javascript" src="/beheer/xinha_060327/my_config_mail.js"></script>
</head>
<body>
<div id="content">
<div class="story">
<?=$res?>
<form action="/beheer/mail_opslaan.php" method="post" name="form1" target="_self" id="form1" onSubmit="MM_validateForm('mail_name','','R');return document.MM_returnValue">
<input type="hidden" name="id" value="<?=$mail_id?>" />
<p><strong>Naam</strong> <input name="mail_name" value="<?=$mail_name?>" size="40" /></p>
<div>
<textarea name="xinha" cols="70" rows="20" id="xinha"><?=$mail_text?></textarea>
</div>
<p><input name="Reset" type="Reset" value="Reset" class="submit" /> <?=$Verwijderbutton?>
<input name="<?=$SubmitButton?>" type="Submit" value="<?=$SubmitButton?>" class="submit" /></p>
<?
if ($id){
?>
<p><input name="opt_nieuwsbrief" type="radio" value="nieuwsbrief" checked="checked" />
Mail de <?=$nieuwsbrief[0]?> Nieuwsbrief-klanten<br />
<input name="opt_nieuwsbrief" type="radio" value="tweakers" />
Mail de <?=$tweakers[0]?> Mail alleen Patrick -test-<br />
<input name="opt_nieuwsbrief" type="radio" value="alle_tweakers" />
Mail ALLE <?=$alle_tweakers[0]?> klanten van Tweakers<br />
<input type="radio" name="opt_nieuwsbrief" value="alle" />
Mail ALLE <?=$alle[0]?> klanten</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
<?
}
?>
</form>
</body>
</html>
include("inc/db.php");
$mail_id = "";
$mail_name = "";
$mail_text = "";
if ($res) $res = "<p style=\"color:#FF0000;font-weight:bold;\">$res</p>";
$SubmitButton = "Nieuw";
if ($id){
$SubmitButton = "Opslaan";
$Verwijderbutton = "<input name=\"Verwijder\" type=\"Submit\" value=\"Verwijder\" class=\"delete\" />";
$query =
"SELECT
mail_id,
mail_name,
mail_text
FROM
cs_mail
WHERE
mail_id = $id
LIMIT 1
";
$result = mysql_query($query)or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$mail_id = $row["mail_id"];
$mail_name = ($row["mail_name"]);
$mail_text = ($row["mail_text"]);
}
}
$query = "SELECT COUNT(*) AS nieuwsbrief FROM cs_users
WHERE newsletter = 'Y' AND user_removed='N';";
$result = mysql_query($query)or die(mysql_error());
$nieuwsbrief = mysql_fetch_row($result);
$query = "SELECT COUNT(*) AS alle FROM cs_users
WHERE user_removed='N';";
$result = mysql_query($query)or die(mysql_error());
$alle = mysql_fetch_row($result);
$query = "SELECT COUNT(*) AS tweakers FROM cs_users
WHERE newsletter = 'Y' AND user_removed='N' AND cp_naam LIKE '%patrick%';";
$result = mysql_query($query)or die(mysql_error());
$tweakers = mysql_fetch_row($result);
$query = "SELECT COUNT(*) AS alle_tweakers FROM cs_users
WHERE user_removed='N' AND referer LIKE '%tweakers.net%';";
$result = mysql_query($query)or die(mysql_error());
$alle_tweakers = mysql_fetch_row($result);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl" >
<head>
<title>Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="/beheer/inc/3col_leftNav.css" rel="stylesheet" type="text/css" />
<style type="text/css">
html,body {
overflow-x:hidden;
}
</style>
<script type="text/javascript">
_editor_url = "/beheer/xinha_060327/";
_editor_lang = "nl";
</script>
<script type="text/javascript" src="/beheer/xinha_060327/htmlarea.js"></script>
<script type="text/javascript" src="/beheer/xinha_060327/my_config_mail.js"></script>
</head>
<body>
<div id="content">
<div class="story">
<?=$res?>
<form action="/beheer/mail_opslaan.php" method="post" name="form1" target="_self" id="form1" onSubmit="MM_validateForm('mail_name','','R');return document.MM_returnValue">
<input type="hidden" name="id" value="<?=$mail_id?>" />
<p><strong>Naam</strong> <input name="mail_name" value="<?=$mail_name?>" size="40" /></p>
<div>
<textarea name="xinha" cols="70" rows="20" id="xinha"><?=$mail_text?></textarea>
</div>
<p><input name="Reset" type="Reset" value="Reset" class="submit" /> <?=$Verwijderbutton?>
<input name="<?=$SubmitButton?>" type="Submit" value="<?=$SubmitButton?>" class="submit" /></p>
<?
if ($id){
?>
<p><input name="opt_nieuwsbrief" type="radio" value="nieuwsbrief" checked="checked" />
Mail de <?=$nieuwsbrief[0]?> Nieuwsbrief-klanten<br />
<input name="opt_nieuwsbrief" type="radio" value="tweakers" />
Mail de <?=$tweakers[0]?> Mail alleen Patrick -test-<br />
<input name="opt_nieuwsbrief" type="radio" value="alle_tweakers" />
Mail ALLE <?=$alle_tweakers[0]?> klanten van Tweakers<br />
<input type="radio" name="opt_nieuwsbrief" value="alle" />
Mail ALLE <?=$alle[0]?> klanten</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
<?
}
?>
</form>
</body>
</html>
Toevoeging op 06/05/2013 12:10:58:
Hierbij heb ik het invoerveld aan toegevoegd (als vervanging voor regel 108 t/m 117).
Maar de waardes worden ook nog niet goed doorgestuurd..
Code (php)
1
2
3
4
5
2
3
4
5
<br />
<TEXTAREA name="opt_nieuwsbrief" value="alle" ROWS="8" COLS="40"></TEXTAREA>
invoerveld mail</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
<TEXTAREA name="opt_nieuwsbrief" value="alle" ROWS="8" COLS="40"></TEXTAREA>
invoerveld mail</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
Toevoeging op 06/05/2013 13:06:53:
Dit script is ook gekoppeld met het script op pagina 1,
maar ik krijg het niet voor elkaar, iemand enig idee?
Gewijzigd op 06/05/2013 11:48:41 door patrick cos
In een textarea met op elke lijn een mailadres, of gescheiden met een komma.
Als je ze op lijn wilt splitsen vanuit een textarea, dan voldoet het volgende wel
Code (php)
Je ziet nu een array met daarin elk mailadres als eigen element. Deze kan je met foreach() dan uitlezen.
Als je het op komma wilt scheiden dan kan je de \n (newline) in explode() vervangen door een komma.
Verder nog wat opmerkingen:
- Waar komt $id vandaan?
- Houd je HTML lowercase, en niet lover/uppercase gemixt. Dus gebruik <textarea> i.p.v. hoofdletters.
- Gebruik isset() als je wilt weten of een variabele bestaat, zo voorkom je dat je opeens notice-foutmeldingen krijgt. Nu kan dat misschien uitstaan, maar later misschien wel weer niet.
- Gebruik voor strings in variabelen liever een single-quoted string, zo hoef je niet steeds alle double-quotes te escapen.
- Lijn 33 t/m 35 zijn niet echt nodig, je hebt al de beschikking over die variabelen, dus waarom zou je ze opnieuw willen opslaan?
- Je foutafhandeling kan ook zonder die(), je script hoeft echt niet dood te gaan als er wat fout gaat. Je kan met if-else statements dit veel netter oplossen.
Gewijzigd op 06/05/2013 13:20:23 door - Ariën -
De $id komt van de email inhoud welke wel uit de database opgehaald moeten worden.
Ik krijg jou code niet goed in mijn code verwerkt, bij alles wat ik probeer werkt het script niet meer(A).
Er zijn totaal 3 scripts welke met elkaar verbonden zijn.
Ook heb ik geprobeerd om 1 email tegelijk in te vullen als test, maar ook dit lukt niet
Gewijzigd op 06/05/2013 13:49:10 door patrick cos
Hoe heb je het dan gecombineerd?
De mail.php stuurt de gegevens zover ik kan zien goed door naar mail_opslaan.php in een array.
Maar vervolegns moet deze nog naar de sendmailing doorgestuurd worden,
Maar dit lukt op één of andere menier nog niet.
Ik heb het idee dat in de sendmailing.php dan ook de fout zit?
mail.php
Code (php)
1
2
3
4
2
3
4
<textarea name="opt_nieuwsbrief" value="mailadresses" ROWS="8" COLS="40"></textarea>
invoerveld mail</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
invoerveld mail</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
-----------------------------------------------------------------------------
mail_opslaan.php
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
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
<?php
if (isset($_POST["Mail"])) {
//$opt_nieuwsbrief = $_POST['opt_nieuwsbrief'];
$mailadresses = explode("\n", $_POST['opt_nieuwsbrief']);
//echo "<pre>".print_r($mailadresses,true)."</pre>"; // dit is ter debugging
//$opt_nieuwsbrief=="alle")
/* if ($opt_nieuwsbrief=="alle") {
$selectquery = "WHERE user_removed = 'N'";
} elseif ($opt_nieuwsbrief=="tweakers") {
$selectquery = "WHERE newsletter = 'Y' AND user_removed = 'N' AND cp_naam LIKE '%patrick%'";
} elseif ($opt_nieuwsbrief=="alle_tweakers") {
$selectquery = "WHERE user_removed = 'N' AND referer LIKE '%tweakers.net%'";
} else {
// ($opt_nieuwsbrief=="nieuwsbrief")
$selectquery = "WHERE newsletter = 'Y' AND user_removed='N'";
} */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl" >
<head>
<title>Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/beheer/inc/3col_leftNav.css" rel="stylesheet" type="text/css" />
<style type="text/css">
html,body {
overflow-x:hidden;
}
</style>
</head>
<body>
<div id="content">
<div class="story">
<?
include("inc/sendmailing.php");
massMail($mail_text, $mail_name, $mailadresses);
$res .= "Mailing opgestuurd. ";
?>
</div>
</div>
<script language="JavaScript" type="text/JavaScript">
<!--
parent.location.href="/beheer/frame.php?page=mail.php&id=<?=$id?>&res=<?=$res?>";
//-->
</script>
</body>
</html>
if (isset($_POST["Mail"])) {
//$opt_nieuwsbrief = $_POST['opt_nieuwsbrief'];
$mailadresses = explode("\n", $_POST['opt_nieuwsbrief']);
//echo "<pre>".print_r($mailadresses,true)."</pre>"; // dit is ter debugging
//$opt_nieuwsbrief=="alle")
/* if ($opt_nieuwsbrief=="alle") {
$selectquery = "WHERE user_removed = 'N'";
} elseif ($opt_nieuwsbrief=="tweakers") {
$selectquery = "WHERE newsletter = 'Y' AND user_removed = 'N' AND cp_naam LIKE '%patrick%'";
} elseif ($opt_nieuwsbrief=="alle_tweakers") {
$selectquery = "WHERE user_removed = 'N' AND referer LIKE '%tweakers.net%'";
} else {
// ($opt_nieuwsbrief=="nieuwsbrief")
$selectquery = "WHERE newsletter = 'Y' AND user_removed='N'";
} */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl" >
<head>
<title>Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/beheer/inc/3col_leftNav.css" rel="stylesheet" type="text/css" />
<style type="text/css">
html,body {
overflow-x:hidden;
}
</style>
</head>
<body>
<div id="content">
<div class="story">
<?
include("inc/sendmailing.php");
massMail($mail_text, $mail_name, $mailadresses);
$res .= "Mailing opgestuurd. ";
?>
</div>
</div>
<script language="JavaScript" type="text/JavaScript">
<!--
parent.location.href="/beheer/frame.php?page=mail.php&id=<?=$id?>&res=<?=$res?>";
//-->
</script>
</body>
</html>
---------------------------------------------------------------
sendmailing: (van pagina 1)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$query = $mailadresses;
//$n = 1;
//$aInvalidChars = array(',', ';');
while($query > 0) {
$to = query;
$final_mail = $html_mail;
mail($to, $title, $final_mail, $headers, '-f'.ADMIN_MAIL);
}
}
//$n = 1;
//$aInvalidChars = array(',', ';');
while($query > 0) {
$to = query;
$final_mail = $html_mail;
mail($to, $title, $final_mail, $headers, '-f'.ADMIN_MAIL);
}
}
Toevoeging op 06/05/2013 14:29:04:
de code tag werkt hier boven niet goed
Ik heb het onderstaande gebruikt om de code te scheiden
-------------------------------------------------------
Gewijzigd op 06/05/2013 14:31:43 door - Ariën -
Ik raad aan om te controleren of je formulier goed is verzonden, dit kan met:
Code (php)
Ook mis je je form-tags met de action in je formulier.
Persoonlijk raad ik aan om $mailadresses in je mass_mail function uit te voeren in een foreach. Dat werkt veel makkelijker.
Gewijzigd op 06/05/2013 14:37:54 door - Ariën -
"Ook mis je je form-tags met de action in je formulier."???
"Persoonlijk raad ik aan om $mailadresses in je mass_mail function uit te voeren in een foreach. Dat werkt veel makkelijker."
Het belangrijkste is dat ik het werkend krijg(A).
Ik ben (nog) geen gevorderde php gebruiker.
mijn while van mijn sendmailing.php klopt volgens mij ook niet deze loopt in een lus en stuurd mailtjes naar query, dit laatste is een foutje maar als ik &query gebruik zou het dan moeten werken.
Net perongeluk 5000 mailtjes gestuurd, gelukkig stond mijn "Mail Queue" op pauze.
En met die for-tags bedoel ik de <form>-tags, in je formulier. Deze zijn verplicht.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$query = $mailadresses;
foreach($query > 0) {
$to = $query;
$final_mail = $html_mail;
mail($to, $title, $final_mail, $headers, '-f'.ADMIN_MAIL);
}
}
foreach($query > 0) {
$to = $query;
$final_mail = $html_mail;
mail($to, $title, $final_mail, $headers, '-f'.ADMIN_MAIL);
}
}
Oh de form tags heb ik wel gebruikt, alleen was deze niet goed de voorbeeld code geplakt.
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
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
<form action="/beheer/mail_opslaan.php" method="post" name="form1" target="_self" id="form1" onSubmit="MM_validateForm('mail_name','','R');return document.MM_returnValue">
<input type="hidden" name="id" value="<?=$mail_id?>" />
<p><strong>Naam</strong> <input name="mail_name" value="<?=$mail_name?>" size="40" /></p>
<div>
<textarea name="xinha" cols="70" rows="20" id="xinha"><?=$mail_text?></textarea>
</div>
<p><input name="Reset" type="Reset" value="Reset" class="submit" /> <?=$Verwijderbutton?>
<input name="<?=$SubmitButton?>" type="Submit" value="<?=$SubmitButton?>" class="submit" /></p>
<?
if ($id){
?>
<br />
<textarea name="opt_nieuwsbrief" value="mailadresses" ROWS="8" COLS="40"></textarea>
invoerveld mail</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
<?
}
?>
</form>
<input type="hidden" name="id" value="<?=$mail_id?>" />
<p><strong>Naam</strong> <input name="mail_name" value="<?=$mail_name?>" size="40" /></p>
<div>
<textarea name="xinha" cols="70" rows="20" id="xinha"><?=$mail_text?></textarea>
</div>
<p><input name="Reset" type="Reset" value="Reset" class="submit" /> <?=$Verwijderbutton?>
<input name="<?=$SubmitButton?>" type="Submit" value="<?=$SubmitButton?>" class="submit" /></p>
<?
if ($id){
?>
<br />
<textarea name="opt_nieuwsbrief" value="mailadresses" ROWS="8" COLS="40"></textarea>
invoerveld mail</p>
<p><input name="Mail" type="Submit" value="Mail" class="submit" /></p>
<?
}
?>
</form>
Gewijzigd op 06/05/2013 15:17:28 door patrick cos
http://php.net/foreach te kijken, want op deze manier gaat het niet werken... ;-)
Ik raad je toch eens aan om naar ja daar had ik toevallig gekeken, maar kwam daar niet echt uit.
Maar $array is dus $mailadresses in mijn geval?
voorzover ik begrijp zou het er alsvolgd uit moeten zien?:
Je hebt toch al $query... (hoewel ik het niet echt duidelijk vind omschrijven dat er een mailadres in zit....)
Als test kan je de mail() prima even vervangen door een 'echo', zo weet je precies of de juiste data gepakt wordt.
Is er overigens een limiet aan het aantal rijen in de array?
Nee, en als die er zou zijn zou die heel hoog liggen.....
Oke, bedankt!!!