Hello,

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:
[email protected]
[email protected]
[email protected]
[email protected]
etc...


PHP script
$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 );

			}

Alvast bedankt.
Mvg.
Coderunner
Geen MySQL? Ben benieuwd hoezo, menig hosting heeft MySQL of anders PostgreSQL ;-)

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.
Waarom zou je geen gebruik kunnen maken van een database?
En los daarvan zijn text-bestanden zo in te lezen door iemand, als ze openbaar staan. En als iemand nou de locatie weet, dan kunnen de spammers hun plezier niet op.

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.
Beste,

De aan- en afmelding van de nieuwsbrief is geen probleem met een text bestand (flat file), dat is aangemaakt en werkt goed.

mvg,
Coderunner
En wat als iemand de locatie van dat bestand weet? Of wat als je nu extra data wilt opslaan? Of statistieken wilt ophalen over wie er gemaild is? Want ik durf te wedden dat als dit script halverwege blijft hangen in het verzend-proces dat je niet weet wie er al gemaild is.

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. ;-)
Beste,

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...
Beste SanThe,

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
Om hoeveel mails gaat het die je verstuurd? Want BCC kan niet met grote aantallen werken. Dus moet het gesplitst worden met iets van 25 stuks.

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.

Reageren