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
-
- Mesaje:157
Select email LA toti utilizatorii
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.
- 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.
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 ?
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:
Daca nu merge, vezi ce gasesti pe net cautand: "php mail bcc" .
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";
ovidius
Mesaje:5
Multumesc.
Inca nu am incercat dar 99% asta este solutia.
Cu bine.
Inca nu am incercat dar 99% asta este solutia.
Cu bine.
Subiecte similare
- Trimitere automata email-uri fara Cron Job
PHP - MySQL - XML Primul mesaj
Buna,Ultimul mesaj
Se poate programa sa trimita un email automat din php fara ca pagina sa fie accesata sau fara sa fie setat un cron in Cpanel ?
Daca ar fi...
Salut,
Ca sa rulezi un script php trebuie sa accesezi acel fisier printr-o aplicatie precum o pagina in browser sau Cron Job pe server.
Din cate... - Setare valori din array in select tag
JavaScript - jQuery - Ajax Primul mesaj
Salut am un array cu orele de functionareUltimul mesaj
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...