Email ontvanger in Nieuwsbrief plaatsen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Code Runner

Code Runner

04/04/2016 14:58:48
Quote Anchor link
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:


PHP script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
$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
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 04/04/2016 17:15:40 door - Ariën -
 
PHP hulp

PHP hulp

25/11/2024 12:28:49
 
Thomas van den Heuvel

Thomas van den Heuvel

04/04/2016 15:37:16
Quote Anchor link
Ik zou eerst alles eens in een database onder gaan brengen, geen gerommel met losse tekstbestanden enzo maar alles gestructureerd op één plek.

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.
 
Code Runner

Code Runner

04/04/2016 15:46:19
Quote Anchor link
Beste,

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
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 16:44:14
Quote Anchor link
Is het gewoon niet $to?

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 -
 
Code Runner

Code Runner

04/04/2016 16:58:08
Quote Anchor link
Beste,

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
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 17:14:57
Quote Anchor link
Als het goed is zou het $nieuwsbriefBestand[0] moeten zijn.
Maar waarom zou je voortborduren op scripting uit 2002(!), terwijl we nu 14 jaar verder zijn?
De code is echt... een drama te noemen.
 
Code Runner

Code Runner

04/04/2016 17:44:28
Quote Anchor link
Neen jammergenoeg, $nieuwsbriefBestand[0] is het niet, geeft op alle nieuwsbrieven enkel het eerste email adres uit het dataBestand m.a.w.
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
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 17:54:38
Quote Anchor link
Doe anders niet moeilijk, en gebruik gewoon phpMailer:
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.
 
Code Runner

Code Runner

04/04/2016 19:29:24
Quote Anchor link
Beste,

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 ...
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 19:43:55
Quote Anchor link
De code en de opbouw is gewoon niet netjes. Dus op een op een gegeven moment houdt het gewoon op. Tenzij je extra tijd wil investeren om de boel op te knappen, terwijl een compleet nieuw script sneller gebouwd is, stukken compacter zal zijn en beter uitbreidbaar. Vooral als je MySQL met de MySQLi/PDO functies gebruikt, heb je een mooi voordeel.
Gewijzigd op 04/04/2016 19:45:11 door - Ariën -
 
Code Runner

Code Runner

04/04/2016 19:50:11
Quote Anchor link
Beste,

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
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 19:52:37
Quote Anchor link
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.
Gewijzigd op 04/04/2016 19:53:12 door - Ariën -
 
Marthijn Buijs

Marthijn Buijs

04/04/2016 19:52:52
Quote Anchor link
Waarom zou je geen gebruik kunnen maken van een database?
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 19:54:50
Quote Anchor link
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.
Gewijzigd op 04/04/2016 19:57:05 door - Ariën -
 
Code Runner

Code Runner

04/04/2016 19:58:58
Quote Anchor link
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
Gewijzigd op 04/04/2016 20:01:08 door Code Runner
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 20:06:17
Quote Anchor link
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. ;-)
Gewijzigd op 04/04/2016 20:08:17 door - Ariën -
 
Code Runner

Code Runner

04/04/2016 20:26:05
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

04/04/2016 20:28:09
Quote Anchor link
Je kan zelf proberen door het script te debuggen door de variabelen te echo'en...
 
- SanThe -

- SanThe -

05/04/2016 03:44:04
Quote Anchor link
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$adressen
= file('bestand.txt');
$bcc = implode(',', $adressen);
?>


Zou moeten werken.
 
Code Runner

Code Runner

05/04/2016 07:25:44
Quote Anchor link
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
Gewijzigd op 05/04/2016 07:26:09 door Code Runner
 
- Ariën  -
Beheerder

- Ariën -

05/04/2016 08:01:09
Quote Anchor link
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.
Gewijzigd op 05/04/2016 08:08:09 door - Ariën -
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.