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
Tussen de 20 en de 40
Dan voldoet een mail() per abonnee ook wel. Zie mijn vorige bericht.
Vandaar dat ze in groepen worden verdeeld zodat de hoeveelheid verkleid wordt.
Wat bedoel je met mail() per abonnee en niet persoonlijk?
Je kan bij BCC-mails bijv. geen persoonlijke aanhef gebruiken of een persoonlijke afmeldcode. Je stuurt de mail in 1 keer weg naar meerdere mensen dus de content van de mail kan niet verschillen.

Dus gebruik gewoon per gebruiker een mail (). En dan zo nu en dan even een sleep.
- Ariën - op 05/04/2016 08:19:15
Dus gebruik gewoon per gebruiker een mail (). En dan zo nu en dan even een sleep.

Beste Ariën,

Kan je je misschien een beetje verduidelijken met een voorbeeld in het php script want een expert ben ik niet in php ... ben geen gevorderde :-(

mvg
In [php]file[/php] heb je nu een array met mailadressen per lijn. Deze kan je met [php]foreach[/php] per stuk uitlezen en dus dan ook mailen.

Als je er echt niet uitkomt, dan kan ik wel een voorbeeld maken.
Als dat zou kunnen graag :-(
Alvast bedankt

[size=xsmall]Toevoeging op 05/04/2016 08:41:55:[/size]

Het komt er dus op aan dat in elke nieuwsbief het persoonlijk email adres staat (begin topic) en niet alle emails uit de database (flat file)
Hopelijk leg ik het goed uit.

<?php
$fileName = "mailadressen.txt";
$listAddresses = file($fileName);
foreach($listAddresses as $address) {
	// in $address heb je nu je mailadres.
	// hier kan je de mail verwerken. 
}
?>
Code Runner op 04/04/2016 16:58:08

Neen $to geeft alle emails van alle leden in een nieuwsbrief

Wat je hier zegt is feitelijk onjuist. $to bevat de waarde $jouwEmail, terwijl je in Bcc de waarde $groepen[$i] gebruikt.

En dat is eigenlijk best vreemd... Alhoewel het uit je script niet blijkt wat er in $jouwEmail staat, neem ik aan dat dat het adres van de afzender is, terwijl in $to het adres van de ontvanger zou moeten staan. Je zit dus effectief mail aan jezelf te sturen.

en dat kan niet de bedoeling zijn dat anderen deze adressen ook kunnnen lezen vandaar de bcc.

Dit is de denkfout van de dag. ;-)

Je gaat elke mail personaliseren door het email-adres op te nemen en vervolgens stuur je de email naar de hele groep, waarvan je de email-adressen in de Bcc opneemt, omdat ze de adressen van de anderen niet mogen weten.

Mijn oordeel: Dit script zuigt aan alle kanten. Geen tijd meer aan verspillen. Deze code moet ritueel worden verbrand.
Wat Willem zegt. Daarom is dit mijn advies:
- Borduur lekker verder op mijn stukje script
- Gebruik bij voorkeur een database. Als MySQL of PostGreSQL niet ondersteunt wordt, kan je ook [php]SQLlite3[/php] gebruiken, die werkt met bestanden volgens een eigen databaseindeling.

Reageren