Email ontvanger in Nieuwsbrief plaatsen
Ik ben een nieuwsbriefsysteem aan het maken maar ik zit strop.
De nieuwsbrief haalt zijn gegevens uit een text bestand en maakt groepen zodat de te versturen nieuwsbrief emails niet té groot in aantal zijn zodat servers ze als spam gaan aanzien.
Nu wil ik aan elke persoon in de database zijn eigen email adres in de nieuwsbrief plaatsen (zie in de onderstaande code '. $ ??? .' maar weet niet hoe en waar ik deze code moet inbrengen. Ik hoop dat iemand mij de code zelf en waar die moet staan kan geven. Je zou me een groot plezier doen want ik ben er al weken mee bezig maar zonder resultaat.
Hier is mijn code (werkt maar script email adres persoon toevoegen ontbreekt)
Text bestand ziet er zo uit:
PHP script
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
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
$Nieuwsbrief = "Onderwerp: $Onderwerp\nBericht:\n\n$Bericht";
$Nieuwsbrief = stripslashes($Nieuwsbrief);
$Nieuwsbrief = nl2br(htmlspecialchars(trim($Nieuwsbrief)));
if($gebruikersnaam == $_POST['gebruikersnaam'] && $wachtwoord == $_POST['wachtwoord'] && $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$nieuwsbriefBestand = file($dataBestand);
$nieuwsbriefBestandLengte = count($nieuwsbriefBestand);
$groepenTeller = 0;
for($i = 0; $i < ($nieuwsbriefBestandLengte+50); $i+=50)
{
$groep = null;
$groepenTeller++;
for($a = $i; $a < ($i+50); $a++)
{
if($nieuwsbriefBestand[$a])
{
$groep .= trim($nieuwsbriefBestand[$a]).",";
}
}
if($groep) { $groepen[] = $groep; }
}
for( $i = 0; $i < count( $groepen ); $i++ )
{
$to = $jouwEmail;
$onderwerp = stripslashes($_POST['onderwerp']);
$_POST['bericht'] = str_replace("\n", "<br />", $_POST['bericht']);
$bericht = nl2br(stripslashes($_POST['bericht'])).'<br /><br /><br /><center>Je hebt deze mail ontvangen omdat je bent ingeschreven op onze nieuwsbrief.<br />
Deze nieuwsbrief is verstuurd aan '. $??? .'
Als u geen informatie meer wenst te ontvangen, klik dan <a href='. $Uitschrijven .'>hier</a> om uw e-mail adres uit het systeem te verwijderen.<br />';
//$headers = 'Cc:'."$groepen[$i]". "\r\n";
$headers .= 'Bcc:'."$groepen[$i]". "\r\n";
$headers .= 'From:'.utf8_decode($jouwWebsiteNaam).' <'.$jouwEmail.'>' . "\r\n";
if($_POST['html'] == 1)
{
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
}
mail( $to, $onderwerp, $bericht, $headers );
}
$Nieuwsbrief = stripslashes($Nieuwsbrief);
$Nieuwsbrief = nl2br(htmlspecialchars(trim($Nieuwsbrief)));
if($gebruikersnaam == $_POST['gebruikersnaam'] && $wachtwoord == $_POST['wachtwoord'] && $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$nieuwsbriefBestand = file($dataBestand);
$nieuwsbriefBestandLengte = count($nieuwsbriefBestand);
$groepenTeller = 0;
for($i = 0; $i < ($nieuwsbriefBestandLengte+50); $i+=50)
{
$groep = null;
$groepenTeller++;
for($a = $i; $a < ($i+50); $a++)
{
if($nieuwsbriefBestand[$a])
{
$groep .= trim($nieuwsbriefBestand[$a]).",";
}
}
if($groep) { $groepen[] = $groep; }
}
for( $i = 0; $i < count( $groepen ); $i++ )
{
$to = $jouwEmail;
$onderwerp = stripslashes($_POST['onderwerp']);
$_POST['bericht'] = str_replace("\n", "<br />", $_POST['bericht']);
$bericht = nl2br(stripslashes($_POST['bericht'])).'<br /><br /><br /><center>Je hebt deze mail ontvangen omdat je bent ingeschreven op onze nieuwsbrief.<br />
Deze nieuwsbrief is verstuurd aan '. $??? .'
Als u geen informatie meer wenst te ontvangen, klik dan <a href='. $Uitschrijven .'>hier</a> om uw e-mail adres uit het systeem te verwijderen.<br />';
//$headers = 'Cc:'."$groepen[$i]". "\r\n";
$headers .= 'Bcc:'."$groepen[$i]". "\r\n";
$headers .= 'From:'.utf8_decode($jouwWebsiteNaam).' <'.$jouwEmail.'>' . "\r\n";
if($_POST['html'] == 1)
{
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
}
mail( $to, $onderwerp, $bericht, $headers );
}
Alvast bedankt.
Mvg.
Coderunner
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 04/04/2016 17:15:40 door - Ariën -
Wanneer je veel/semi-bulk mail gaat versturen mag je ook even nadenken over een slimme oplossing, waarbij ik op zijn minst gebruik zou maken van een soort van library zoals PHPMailer.
En tot slot, heb hier verder geen ervaring mee dus kan mij vergissen, is het volgens mij zo dat wanneer je vanaf locatie Y mail stuurt uit naam van X dit wel als zodanig geconfigureerd moet zijn, anders wordt je mail snel als ongewenst gemarkeerd (spam).
Wanneer je veel mail gaat versturen lijkt het mij belangrijk dat je vertrouwd bent met de regels van dit spel.
Het gaat hier niet om naar duizende personen nieuwsbrieven te versturen, eerder naar een beperkte groep van leden. Het gaat hier trouwens puur over PHP scripting ;)
Toch bedankt voor je reaktie.
Graag een oplossing voor het probleem ...
mvg
Gewijzigd op 04/04/2016 16:12:55 door Code Runner
Persoonlijk gezien ik zou ik ook liever naar phpMailer kijken. Dit mail zoveel makkelijker dan de standaard mailfunctie, waarbij je zelf alle nodige ingredienten toe moet voegen om je mails niet als spam te willen alten markeren. Je kan dan met enkele regeltjes als een mailtje wegsturen zonder je druk te maken om de headers.
Grappig om te zien dat het een oud script is uit 2002 die van Webmensen komt :-P
Gewijzigd op 04/04/2016 16:47:00 door - Ariën -
Neen $to geeft alle emails van alle leden in een nieuwsbrief, en dat kan niet de bedoeling zijn dat anderen deze adressen ook kunnnen lezen vandaar de bcc.
Ik dank jullie voor jullie bezorgdheid en mij phpMailer aanbevelen maar ik zou graag bovenstaand php script werkende krijgen - email van elke ontvanger in de nieuwsbrief krijgen (zie bovenstaand script)
Inderdaad het is een script uit 2002 ;)
mvg
Gewijzigd op 04/04/2016 16:59:23 door Code Runner
Maar waarom zou je voortborduren op scripting uit 2002(!), terwijl we nu 14 jaar verder zijn?
De code is echt... een drama te noemen.
naar persoon 1 plaatst hij [email protected]
naar persoon 2 plaatst hij ook [email protected]
naar persoon 3 ook [email protected]
dus allemaal dezelfde email adressen
zou moeten zijn
persoon 1 -> [email protected]
persoon 2 -> [email protected]
persoon 3 -> [email protected]
enz ...
Bedankt in ieder geval om mee te helpen zoeken naar een oplossing!
mvg
http://phpmailer.worxware.com/index.php?pg=examplebmail
Tevens raad ik een grondige rewrite aan, zodat je script er weer een tijdje tegenaan kan. Deze code uit 2002 vind ik gewoon zwaar belabberd. De enige weg is haast door met 'trial and error' en 'debuggen' er uit te komen hoe het werkt.
Ik doe niet moeilijk, ik probeer gewoon het script werkend te krijgen. Ik kijg ofwel alleen het eerste ofwel het laatste email in de nieuwsbrief. Ook heb ik al hetgeen ik vraag verkregen m.a.w. ieder email adres op afzonderlijke nieuwsbrief maar dan verstuurt hij deze naar alle personen in de database en dat is ook weer niet de bedoeling. Ik vraag gewoon de php code die het email adres vermelt in de nieuwbrief van elke persoon waar naar de nieuwsbrief verzonden wordt en die in de database staat, zodat niet iedereen alle emails zien.
mvg,
Coderunner
PS Ik ga zeker ook eens naar phpMailer kijken ...
Gewijzigd op 04/04/2016 19:45:11 door - Ariën -
Ik kan geen gebruik maken van een MySQL database :-( dus dat valt weg.
Misschien iemand anders van de lezers met een oplossing ...?
Ik wacht af.
mvg,
Coderunner
Want wat doe je nu als iemand zich wilt afmelden? Dan moet je nu alle regels naar boven verhuizen en je lijst dus opnieuw opbouwen. Met MySQL kan je gewoon een record verwijderen en weg is dan echt weg.
Gewijzigd op 04/04/2016 19:53:12 door - Ariën -
Waarom zou je geen gebruik kunnen maken van een database?
Mijn advies: Gooi dit script in de vuilnisbak, of ga het van top tot teen grondig doorlopen, en gebruik een database.
Als je geen MySQL hebt (wat mij stug lijkt) dan is er ook nog iets van SQLlite.
Gewijzigd op 04/04/2016 19:57:05 door - Ariën -
De aan- en afmelding van de nieuwsbrief is geen probleem met een text bestand (flat file), dat is aangemaakt en werkt goed.
mvg,
Coderunner
Gewijzigd op 04/04/2016 20:01:08 door Code Runner
Daarom raad ik databases aan: Je kan makkelijk extra data toevoegen, je kan statistieken uitdraaien, je kan bijhouden wie er gemaild is zodat hij een gestopt script de batch weer verder kan worden afgewerkt zonder dubbele mails te sturen.
Wat je nu hebt zijn scripts uit 2002(!) die anno 2016 best bizar in elkaar zitten en tegenworodig veel beter kunnen worden gebouwd. Waarom nog vasthouden aan antieke meuk wat eigenlijk in een museum thuishoort?
Dit kan je prima vergelijken met het Mat'64 stoptreinmaterieel van de NS wat sinds afgelopen weekend definitief uit de dienst is genomen. Onderhoud werd lastig, te duur, de techniek is verouderd, en kans op defecten en ongemak werd steeds groter.
Maar als je echt deze oude zut wilt blijven reviseren met plakband-constructies. 'Be my guest', maar ik brand mijn vingers er niet aan, en ik denk dat ik niet de enige zal zijn. ;-)
Gewijzigd op 04/04/2016 20:08:17 door - Ariën -
Ik begrijp heel goed dat je je vingers er niet wil aan verbranden, respect dat je al die nuttige info hebt doorgegeven en ik wil je ook niets opdringen. Ik stelde de vraag gewoon voor een oplossing op mijn probleem, van eenieder wie, meer niet ...
mvg,
Coderunner
Je kan zelf proberen door het script te debuggen door de variabelen te echo'en...
Bedankt voor je antwoord maar waar moet dat dan komen in het php script?
Ik krijg nu alle email adressen samen in de nieuwsbrief :-(
mvg,
Coderunner
Gewijzigd op 05/04/2016 07:26:09 door Code Runner
Let er dan wel op dat je mails niet persoonlijk kunnen zijn. Anders kan je beter per abonnee een mail() uitvoeren en een sleep(4) per 25 stuks om wat adrmruimte te geven.
Gewijzigd op 05/04/2016 08:08:09 door - Ariën -