Select email LA toti utilizatorii

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Komfort
Mesaje:157

Select email LA toti utilizatorii

am un tabel cu fiecare email al fiecarui utilizator si as vrea sa le dau cate un email la fiecare 48 ore..-->asta stiu sa fac cu cron job dar faza cu sa dau la toti acelasi email nu am nicio idee

ar trebui sa selectezi toate emailurile si apoi sa le trimit mesaj...dar nu prea stiu cum
multumesc

MarPlo Mesaje:4343
Vezi ca sunt lectii PHP-MySQL pe site cum sa selectezi date din tabel mysql:
- Utilizarea bazelor de date folosind PHP.
- Sau mai actual, e folositor sa faci cu PDO: https://marplo.net/php-mysql/pdo-sel ... fetch.html
- Iar la pagina: Trimitere e-mail e despre cum se trimite e-mail cu php.

Deci, ca idee, compui mesajul intr-o variabila, selectezi numele si adresa celor la care vrei sa trimiti, iar in instructiunea WHILE care parcurge datele selectate aplici functia: mail($to, $subject, $message, $from ) pentru fiecare.

MarPlo Mesaje:4343
Daca in tabelul "abonati" ai randuri cu 'nume' si 'email' pt. fiecare, poti folosi ca model acest cod:

Cod: Selectaţi tot

<?php
// ... conectare la baza de date mysql

$sub = 'Subiect e-mail';
$msg = 'Mesajul din e-mail';
$from = 'From: adresa_admin@de.mail';

$sql = "SELECT `nume`, `email` FROM `abonati`";
$result = mysql_query($sql);
if(mysql_errno()) {
  echo '<br />'. mysql_errno(). ' : '. mysql_error(). '<br />';
}
// daca e cel putin un rand returnat
if(mysql_num_rows($result) > 0) {
  // parcurge randurile
  while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    // afiseaza mesaj daca poate sau nu sa trimita e-mail-ul
    if(mail($row['email'], $sub, $msg, $from )) echo '<br/>Email trimis la: '. $row['email'];
    else echo '<br/>Nu poate trimite Email la: '. $row['email'];
  }
}
else {
  echo '0 resulte';
}
?>

Komfort Mesaje:157
dap...aceeasi pb...trimite de 2 ori la fiecare email:|

MarPlo Mesaje:4343
Nu stiu care sa fie problema, ori sunt de 2 ori in baza de date, ori e de la serverul de mail.
Incearca si urmatoarea varianta, sa se adauge adresa de mail la care s-a trimis intr-un array, iar trimiterea sa fie facuta dupa ce se verifica acel array si adresa de e-mail nu e in el.
Daca si asa apare problema, cauza o fi de la serverul de mail, oricum ma depaseste.

Cod: Selectaţi tot

<?php
// ... conectare la baza de date mysql

$sub = 'Subiect e-mail';
$msg = 'Mesajul din e-mail';
$from = 'From: adresa_admin@de.mail';

$mailsent = array();      // array in care sa fie retinute adresele de e-mail la care s-a trimis

$sql = "SELECT `nume`, `email` FROM `abonati`";
$result = mysql_query($sql);
if(mysql_errno()) {
  echo '<br />'. mysql_errno(). ' : '. mysql_error(). '<br />';
}
// daca e cel putin un rand returnat
if(mysql_num_rows($result) > 0) {
  // parcurge randurile
  while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    // daca adresa de e-mail nu e in $mailsent
    if(!in_array($row['email'], $mailsent)) {
      // afiseaza mesaj daca poate sau nu sa trimita e-mail-ul
      if(mail($row['email'], $sub, $msg, $from )) {
        $mailsent[] = $row['email'];         // adauga in array ca trimis
        echo '<br/>Email trimis la: '. $row['email'];
      }
      else echo '<br/>Nu poate trimite Email la: '. $row['email'];
    }
  }
}
else {
  echo '0 resulte';
}
?>

ovidius Mesaje:5
Va salut !

Am o intrebare legata de acest subiect.
Folosesc un cod simplu care extrage din baza de date adresele de e-mail si trimite e-mail-urile pe rand.

Cum pot sa fac sa trimit un singur e-mail la toti cei din baza de date dar astfel incat sa nu apara toate adresele in mesaj, adica sa nu se poata vedea unii pe altii...din motive de securitate a datelor ?

MarPlo Mesaje:4343
Salut
Din cate stiu, celelalte adrese de e-mail trebuie adaugate la BCC. Dar practic nu am folosit ca sa stiu cum functioneaza.
Incearca sa adaugi email-urile intr-un header cu 'bcc"', separate prin virgula, cam asa:

Cod: Selectaţi tot

$headers .= 'Bcc: nume1@domeniu.com, nume1@domeniu.net' . "\r\n";
 
Daca nu merge, vezi ce gasesti pe net cautand: "php mail bcc" .

ovidius Mesaje:5
Multumesc.
Inca nu am incercat dar 99% asta este solutia.

Cu bine.

Subiecte similare