Pagina 1 din 1
Select email LA toti utilizatorii
Scris: Dum Feb 12, 2012
de Komfort
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
Select email LA toti utilizatorii
Scris: Dum Feb 12, 2012
de MarPlo
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.
Select email LA toti utilizatorii
Scris: Dum Feb 12, 2012
de MarPlo
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';
}
?>
Select email LA toti utilizatorii
Scris: Dum Feb 12, 2012
de Komfort
dap...aceeasi pb...trimite de 2 ori la fiecare email:|
Select email LA toti utilizatorii
Scris: Dum Feb 12, 2012
de MarPlo
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';
}
?>
Select email LA toti utilizatorii
Scris: Mar Apr 24, 2012
de ovidius
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 ?
Select email LA toti utilizatorii
Scris: Mar Apr 24, 2012
de MarPlo
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" .
Select email LA toti utilizatorii
Scris: Joi Apr 26, 2012
de ovidius
Multumesc.
Inca nu am incercat dar 99% asta este solutia.
Cu bine.