Trimitere E-Mail la mai multe adrese

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

Trimitere E-Mail la mai multe adrese

Am un fisier excel cu vreo 1500 de adrese de e-mail.Cineva ma intrebat daca poate trimite un singur e-mail la toate adresele odata si ori de cat are nevoie sa mai adauge cate o adresa la lista.

M-am gandit la un script php care sa adauge intr-un tabel dintr-o baza de date adresele de mail si dupa asta un select care sa copie toate adresele intr-o variabila $adress de exemplu.Intrebarea mea e , va merge varianta la care m-am gandit eu, sau exista alta mai buna?

As dori cateva idei sau informatii in legatura cu asta si daca se poate si ceva informatii cum sa fac ca email-urile sa nu se duca in folderul Spam.

Multumesc.

MarPlo Mesaje:4343
Vezi raspunsurile din subiectul de la aceasta adresa: php-mysql-xml/update-email-toti-utilizatorii-t908.html
Nu prea ai cum sa eviti ca dupa aceea email-urile sa nu fie puse in Spam. Asta depinde si de serviciul de email unde sunt trimise, daca detecteaza prea multe email-uri de la un IP sau adresa e-mail, il adauga in lista de Spam-eri.

tycyssg Mesaje:58
Am inteles tot , din scripturile puse de tine mai putin asta:

Cod: Selectaţi tot

$headers .= 'Bcc: nume1@domeniu.com, nume1@domeniu.net' . "\r\n";
 

MarPlo Mesaje:4343
Poti sa adaugi intr-un Array adresele preluate din baza de date, apoi, cu implode() le pui ca sir in $headers.
Ceva cam asa:

Cod: Selectaţi tot

$mails = array();
// cod pt. preluare adrese din baza de date
// in instructiunea WHILE() care parcurge acele date se foloseste asa, ca sa le adauge in array:
// $mails[] = $row['nume_coloana'];

// ...

$headers .= 'Bcc: '. implode(', ', $mails). "\r\n";
 

tycyssg Mesaje:58
Am incercat eu sa fac ceva , dar nu cred ca am reusit...si nu cred ca este bine.
Acesta este codul:

Cod: Selectaţi tot

<?php 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$name= $_POST['name'];
$sub = $_POST['subject'];
$msg = $_POST['msj'];
$from = $_POST['email'];

$result=mysql_query("SELECT email FROM mails");
if(mysql_num_rows($result)>0)
     {
          while($row = mysql_fetch_array($result))
              {        
             $mails[] = $row['email'];
}
}
 else{
echo'No adress in data base';

}

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = "From: $name <$from>";
$headers .= 'Bcc: '. implode(', ', $mails). "\r\n";

$send = mail($headers,$name,$sub,$msj);
if($send) { echo '<div>Message was sent successfully</div><br /><div>Press <a href="index.php">Here</a> to go back</div>'; }
  else
   { echo '<div>Warning ! Message cannot be sent</div><br /><div>Press <a href="index.php">Here</a> to try again</div>'; }
?>
Astea sunt erorile:

Cod: Selectaţi tot

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\send.php on line 15
No adress in data base
Warning: implode() [function.implode]: Invalid arguments passed in C:\AppServ\www\send.php on line 30
Message was sent successfully

Press Here to go back
Acestea sunt liniile 15 si 30:

Cod: Selectaţi tot

if(mysql_num_rows($result)>0) //15

$headers .= 'Bcc: '. implode(', ', $mails). "\r\n"; //30
Nu am stiut ce trebuie sa pun la $to , si am renuntat, pentru ca am testat cu yahoo si am vazut ca nu e necesar sa ai o adresa de email daca ai completat campul BBC.

MarPlo Mesaje:4343
Nu stiu care sa fie problema in acel cod.
Mesajul:

Cod: Selectaţi tot

mysql_num_rows(): supplied argument is not a valid MySQL result resource in
apare cand MySQL returneaza eroare la comanda SQL transmisa. Fiind o comanda atat de simpla, singura idee ar fi ca e o gresala la numele coloanei sau tabelului fata de cum e in baza de date.

Poti vedea eroarea de la MYSQL adaugand acest cod dupa transmiterea Select-ului:

Cod: Selectaţi tot

if(mysql_errno()) {
    echo '<br />'. mysql_error(). '<br />';
}

tycyssg Mesaje:58
Am reusit pana la urma sa fac scriptul sa functioneze dar nu reusesc sa ii dau o valoare campului "From:"

Cod: Selectaţi tot

<?php 

$con = mysql_connect("*****","*****","*****");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$sub = $_POST['subject'];
$msg = $_POST['msj'];
$to='';

$message='<center>'.$sub.'</center><br />'.$msg.'<br /><br /><br />You recive this message because you are a member of <b>BIG MENU GB</b>.<br />
This message was sent by owner of <b>BIG MENU GB</b><br />';

mysql_select_db("****", $con);

$result=mysql_query("SELECT email FROM mails");
if(mysql_num_rows($result)>0)
     {
	      while($row = mysql_fetch_array($result))
		      {        
			 $mails[] = $row['email'];
}
}
 else{
echo'No adress in data base';

}

$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'Bcc: '.implode(",", $mails)."\r\n";


$send = mail($to,$sub,$message,$headers);

if($send) { echo '<div>Message was sent successfully</div><br /><div>Press <a href="index.php">Here</a> to go back</div>'; }
  else
   { echo '<div>Warning ! Message canot be send</div><br /><div>Press <a href="index.php">Here</a> to try again</div>'; }
   

?>
Codul mai sus merge perfect doar ca atunci cand primesc msj , in loc sa apara adresa pe care o bag eu in formular apare una de genu 821729@linweb.ahost.me . Da stiu ca vei spune ca nu am nici o variabila pentru From dar cand adaugam o variabila pentru From:

Cod: Selectaţi tot

$from='Staff BIG MENU GB'.$_POST['email'];
apoi mergeam in

Cod: Selectaţi tot

$send = mail($to,$sub,$message,$headers);
si adaugam in lista $from

cand incercam sa trimit msj imi apare acel msj de la els Warning ! Message canot be send. Cineva mi-a spus ca functia mail din php nu suporta mai mult de 4 variabile.

Apoi am sters $from din functia mail si am adaugat header.

Cod: Selectaţi tot

$headers .= 'From: '.$_POST['email']."\r\n";
La fel imi apare acel msj de Warning.

Apoi am incercat

Cod: Selectaţi tot

$send = mail($to,$from,$message,$headers);
- fara headeru de From

Si unde trebuia sa apara msj apare adresa de e-mail pentru ca il i-a ca drept subiect.

Intr-un final am realizat ca cu headeru de From nu ma lasa sa trimit msj si nici cu 5 variabile in functia mail.Se poate gasi vreo rezolvare?

MarPlo Mesaje:4343
Ar trebui sa mearga cu From in headers, asa:

Cod: Selectaţi tot

$headers = "From: Nume <". $_POST['email']. ">";
 
De ce nu merge, nu cunosc; o fi de la serverul local de mail prin care PHP trimite email-urile.
Se poaste ca acel server sa ceara autentificare prin SMTP ca sa adauge adresa care vrei la From, daca nu, pune adresa setata in el. Chestii complicate, ma cam depasesc.
Dar aceeasi problema e discutata si rezolvata aici: problema email "from" .

Endyca Mesaje:1
Pentru a trimite mai multe emailuri, pana la 1000 si la fiecare ajunge separat, si video-email-uri sau video-conferinta, m-am abonat la:
talkfusion.com/

Subiecte similare