Script Trimitere mail

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

Script Trimitere mail

Buna, din nou
Am o problema spinoasa: nu pot sa receptionez un mail cu attach. De fapt il primesc, dar cu attasamentul in forma de text, cam asa:

Cod: Selectaţi tot

"MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="==Multipart_Boundary_xa76125cf61676603d47ba5197129b853x"

<div style="color:black;">dwedw</div>Un multi-part mesaj in MIME format.

--==Multipart_Boundary_xa76125cf61676603d47ba5197129b853x
Content-Type:text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<div style="color:black;">dwedw</div>

--==Multipart_Boundary_xa76125cf61676603d47ba5197129b853x
Content-Type: application/octet-stream;
name="mailer.zip"
Content-Transfer-Encoding: base64

UEsDBBQAAgAIAHNMPDw8kkCGwgEAAHUDAAALAAAAQ2l0ZXN0ZS50eHRtUs1u2zAMPi9A3oHwpQng
+NBjdxp22QZsMNAnYGymYSHLBiUlQJ5+n2R7SYfeJJH6/sjXznSKyVE3+qhe6JkubMo+ygu1pgPX
1LEJTSNHoZOS+s6lwNSPbLjgKaigoZnOU02Kx1xL+NejynbWC1M1sLrn5qZTRd0nYEE/QJ3j4Bpq
xUdLxMNRnKAlJo6qNQWxixg0R5NjUpSYcJWbUPujzVh4yBSMDh0UVIMEfhdyTNybBKFeSA5ZVLPd"
... etc

Mentionez ca am incercat scriptul pe un domeniu, deoarece de pe calculatorul meu imi trimitea toate mailurile in Spam! (Incercarile le-am facut cu trimiterea mailului pe un cont de Yahoo)

Scriptul arata cam asa: (e putin modificat, dar e luat de pe localhost, pagina cu trimitere mail cu fisiere atasate in PHP MySQL, multumesc inca o data pe acesta cale)

Cod: Selectaţi tot

function send_mail($to, $asunto, $msg, $attach){
  $rand_hash = md5(time());
  $mime_boundary = "==Multipart_Boundary_x".$rand_hash."x";

  //dirección del remitente y headers
  $headers = "From: Asociación <webmaster@site.es>" . "\r\n";
  
  //dirección de respuesta, si queremos que sea distinta que la del remitente 
  $headers .= "Reply-To: webmaster@site.es" . "\r\n"; 

  //ruta del mensaje desde origen a destino 
  $headers .= "Return-path: webmaster@site.es" . "\r\n"; 

  if (count($attach)<1) { // Daca nu exista fisiere atasate
       $headers .= "MIME-Version: 1.0" . "\r\n";
       $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
  }
  else {  // Aici se seteaza includerea atasamentelor (daca exista fisiere adaugate)
      $headers .= "\nMIME-Version: 1.0\n".
                  "Content-Type: multipart/mixed;\n".
                  ' boundary="'.$mime_boundary.'"';
      $msg .= "Un multi-part mesaj in MIME format.\n\n".
              '--'.$mime_boundary."\n".
              "Content-Type:text/html; charset=\"iso-8859-1\"\n".
              "Content-Transfer-Encoding: 7bit\n\n".$msg."\n\n";

        // Parcurge matricea cu datele fisierelor
        for($i=0; $i<count($attach); $i++) {
        // Deschide fisierul si preia datele din el
            if ($file = fopen($attach[$i][0],'rb')) {
                  $data = fread($file, filesize($attach[$i][0]));
                   fclose($file);
            }

        // Codeaza date preluate cu MIME base64 si le separa in parti mai mici
        $data = chunk_split(base64_encode($data));

        // Adauga datele fisierului in mesajul mail-ului
        $msg .= '--'.$mime_boundary."\n".
                'Content-Type: '.$attach[$i][2].";\n".
                ' name="'.$attach[$i][1]."\"\n".
                "Content-Transfer-Encoding: base64\n\n".$data ."\n\n".
                '--'.$mime_boundary."\n";
        }
  }

  //enviar email
  if (mail($to, stripslashes($asunto), stripslashes($msg), $headers))
    return 'El mensaje ha sido enviado con succes';
} 
Daca cineva poate sa dea o mana de ajutor...
Va doresc numai bine

MarPlo Mesaje: 4343
Nu stiu care sa fie problema, poate tipul fisierului atasat.
Asa cum e functia in pagina din curs am testat-o pe yahoo si hotmail cu atasamente RAR si ZIP, si a functionat bine.
De pe alt server ai incercat, e la fel? Asta ca sa-ti dai seama daca e de la hosting.

ripe12 Mesaje: 12
Voi incerca de pe alt srv. Apropo' daca vreau sa atasez alt tip de fisier: pps, doc, tif, jpg,... ramane expresia 'application/octet-stream' sau trebuie sa o inlocuiesc...
Merci.

MarPlo Mesaje: 4343
Nu stiu sigur, nu am incercat cu alte tipuri de fisiere, daca nu merge, iar cu rar, zip merge, probabil trebuie schimbat. Nu cunosc exact cu ce tip specific fiecaruia.

ripe12 Mesaje: 12
Am rezolvat!!!
Greseala era ca se puneau de 2 ori consecutiv \n\n in conditia "else" din "if":

$headers .= "Return-path: webmaster@site.es" . "\r\n";
if (count($attach)<1) { // Daca nu exista fisiere atasate
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
}
else { // Aici se seteaza includerea atasamentelor (daca exista fisiere adaugate)
$headers .= "\nMIME-Version: 1.0\n".

Si pentru siguranta am lasat peste tot "\n" in loc de "\n\r" deoarece, se pare, ca serverul-ul unde am host (sper ca asa se spune) converteste automat LF in CRLF. Aaa, sa nu uit: vad ca trimite orice tip de attach, nu conteaza extensia...

Oricum, multumesc pentru raspunsul prompt.
O zi buna.

MarPlo Mesaje: 4343
Bine ca ai rezolvat, la mine nu aparuse problema asta, m-am mai uitat o data pe script acum si nu are conditia else in if. Ai facut altfel script-ul si bine ca te pricepi :). Nu stiu daca e mai bun, pt. uz general, cel facut de tine, sau e bun doar pentru structura host-ului unde il folosesti.
Daca poti, posteaza codul final al scriptului, asa cum l-ai facut si functioneaza, sa fie de folos celor care ajung pe acest subiect.

ripe12 Mesaje: 12
Voi pune mai jos scriptul, dar :
1. el face parte dintr-un ansamblu de scripturi si trebuie modificat ca sa functioneze.
2. multe explicatii si variabile sunt in spaniola :D, traiesc de o vreme in Spania si am incercat sa ma integrez "poco a poco"
3. inca sunt unele chestii care nu merg cum ar trebui:
a) corpul emailului se duce intr-o singura linie, nu cum il introducem noi de la tastatura (cu spatii, enter-uri, etc.)
b) tot timpul face prima oara upload la fisierele din attach si abia apoi verifica conditiile din if-uri !!!, deci chiar daca nu trimite mailul, tot trebuie sa astepti sa faca upload pe srv.
c) daca dai refresh trimite inca o data mailul...
d) poate mai gasiti voi altele :D

OK, asta e scriptul: (PS: a trebuit sa bifez toate casutele la "Optiuni" deoarece spunea sa nu am voie mai mult de 2 URL-uri) sper sa se vada toate caracterele...

<?php
require_once("Connections/agenda_de_contactos.php"); //se face conectarea la baza de date, verifica daca esti inregistrat, se pun campurile de inceput pt HTML (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ........)

if (isset($_POST['cuando'])) $_SESSION['post_cuando']=$_POST['cuando']; //aici preiau niste date din alt script pentru a scoate emailurile din baza de date
if (isset($_POST['asunto_email'])) $asunto_email=$_POST['asunto_email'];
if (isset($_POST['cuerpo_email'])) $cuerpo_email=$_POST['cuerpo_email'];
$attach = array();

function send_mail($to, $asunto, $msg, $attach){

$rand_hash = md5(time());
$mime_boundary = "==Multipart_Boundary_x".$rand_hash."x";

//dirección del remitente y headers
$headers = "From: Asociación<webmaster@site.es>" . "\n";

//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: webmaster@site.es" . "\n";

//ruta del mensaje desde origen a destino
$headers .= "Return-path: webmaster@site.es" . "\n";

if (count($attach)<1) { //daca testul e TRUE inseamna ca nu sunt fisiere atasate
$headers .= "MIME-Version: 1.0" . "\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\n";
}
else { // Aici se seteaza includerea atasamentelor (exista fisiere adaugate)
$headers .= "MIME-Version: 1.0\n".
"Content-Type: multipart/mixed;\n".
' boundary="'.$mime_boundary.'"';
$msg .= "Un multi-part mesaj in MIME format.\n\n".
'--'.$mime_boundary."\n".
"Content-Type:text/html; charset=\"iso-8859-1\"\n".
"Content-Transfer-Encoding: 7bit\n\n".$msg."\n\n";

for($i=0; $i<count($attach); $i++) { // Parcurge matricea cu datele fisierelor
if ($file = fopen($attach[$i][0],'rb')) { // Deschide fisierul si preia datele din el
$data = fread($file, filesize($attach[$i][0]));
fclose($file);
}

// Codeaza date preluate cu MIME base64 si le separa in parti mai mici
$data = chunk_split(base64_encode($data));

// Adauga datele fisierului in mesajul mail-ului
$msg .= '--'.$mime_boundary."\n".
'Content-Type: '.$attach[$i][2].";\n".
' name="'.$attach[$i][1]."\"\n".
"Content-Transfer-Encoding: base64\n\n".$data ."\n\n".
'--'.$mime_boundary."\n";
}
}

//enviar email
if (mail($to, stripslashes($asunto), stripslashes($msg), $headers))
return 'El mensaje ha sido enviado con succes';
else return 'Error: el mensaje no ha podido ser enviado';
}

if (!isset($_POST['cuerpo_email']) || $_POST['cuerpo_email']=="") {
if (isset($_POST['cuerpo_email'])) {
$emails=$_POST['emails'];
echo '<font color="ff0000" size="-1">Por favor, ponga algo en el mensaje...</font>';
}
else {
$emails="";
foreach ($_SESSION['post_cuando'] as $cuando) {
$sql=mysql_query("SELECT email FROM email WHERE cuando_email='$cuando'");
while ($verif=mysql_fetch_assoc($sql)) //scot emailurile din baza de date
$emails .= $verif['email'].'; ';
}
}
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="POST" enctype="multipart/form-data">
<div id="email">Destinatario:
<textarea name="emails" rows="3" cols="70" wrap="soft">'.$emails.'</textarea><br /><br />
Asunto:
<input type="text" name="asunto_email" size="80" maxlength="90" /><br /><br />
Escribe el mensaje:
<textarea name="cuerpo_email" rows="12" cols="70" wrap="hard"></textarea><br /><br />
Archivo adjunto:
<input type="file" name="archivo1" /><br />
<input type="file" name="archivo2" /><br /><br />
<input type="submit" name="submit" value="Enviar email" />
</div>
</form>';
}
else {
$subiect = $asunto_email;
$mesaj = '<div style="color:black;">'.$cuerpo_email.'</div>';
if (is_uploaded_file($_FILES['archivo1']['tmp_name'])) { //se incarca fisierul in srv in locatia temporara
$uploadpath = $_FILES['archivo1']['tmp_name'];
$name1 = basename($_FILES['archivo1']['name']);
$attach[] = array($uploadpath, $name1, 'application/octet-stream'); //se adauga fisierul ca array
}
if (is_uploaded_file($_FILES['archivo2']['tmp_name'])) {
$uploadpath = $_FILES['archivo2']['tmp_name'];
$name2 = basename($_FILES['archivo2']['name']);
$attach[] = array($uploadpath, $name2, 'application/octet-stream');
}
if ($_POST['emails']!="") {
$emails=explode(";",$_POST['emails']);
foreach ($emails as $to) { // $to -> dirección de e-mail de dest.
$to=trim($to);
if (strlen($to)!="") {
// Acum se apeleaza functia, cu aceste date pe care le va trimite la serverul de mail
$go_mail = send_mail($to, $subiect, $mesaj, $attach);
echo $go_mail.' a '.$to.'<br />'; // Afiseaza rezultatul
}
}
$msj='Emails: '.$_POST['emails'].'<br /><br />'.$mesaj;
send_mail('adresamea@yahoo.com', $subiect, $msj, $attach); //adresa unde se va trimite un email beck-up, avand in plus informatiile despre cui a fost trimis emailul
unset($_SESSION['post_cuando']);
$cuando=time();
$direction=$_POST['emails'];
$cuerpo_email .="Adjuntos: ";
if (isset($name1)) $cuerpo_email .=$name1.' <br />';
if (isset($name2)) $cuerpo_email .=$name2.' <br />';
$sql="INSERT INTO enviados (asunto, cuerpo, destinatario, envio_cuando) VALUES ('$asunto_email', '$cuerpo_email', '$direction', '$cuando')"; //salvez datele in baza de date
if (!mysql_query($sql, $conn)) echo "El email no ha sido grabado por: ". mysql_errno(). " : ". mysql_error();
$sql=mysql_query("SELECT * FROM enviados WHERE envio_cuando='$cuando'");
while ($verif=mysql_fetch_assoc($sql)) { //afisez datele salvate
echo $verif['asunto'].'<br />';
echo $verif['cuerpo'].'<br />';
echo $verif['destinatario'].'<br />';
echo $verif['envio_cuando'].'<br />';
}
}
else echo "Introduzca al menos una dirección de email";
}
?>
<div id="fix_menu_final">
<table width="460" border="0">
<tr>
<td width="230"><a href="form_intro.php" title="Añadir">Añadir otro contacto</a></td>
<td width="230"><a href="form_list.php?verif=1" title="Enviar otro email">Enviar otro email</a></td>
</tr>
<tr>
<td height="20"><a href="base_de_datos.php" title="Al principio">Volver a la pagina de inicio</a></td>
<td><a href="form_list.php" title="Añadir">Buscar contactos</a></td>
</tr>
</table>
</div>

</body>
</html>

ripe12 Mesaje: 12
Am rezolvat problema de la 3. a) corpul emailului se duce intr-o singura linie...
Se schimba linia:
$mesaj = '<div style="color:black;">'.$cuerpo_email.'</div>';
cu
$mesaj = '<div style="color:black;">'.nl2br($cuerpo_email).'</div>';

nu ma intrebati de ce... asa au fost indicatiile http://forum.softpedia.com/index.php?showtopic=650958

Poate deseara sau maine ma apuc de "sapat", acum trebuie sa fug.

O zi usoara tuturor.

MarPlo Mesaje: 4343
Multumesc pt. script-ul postat :)
- nl2br() adauga tagul <br> la spatiile de linie noua.

ripe12 Mesaje: 12
Buna,
Am rezolvat si la 3. b):
Am introdus niste verificari cu JavaScript... (verificari care se fac la client) deci inainte de a pleca informatia la srv. E adevarat ca m-am ajutat putin de DreamWeaver pentru a face codul :D . Dupa ce il mai slefui pe ici pe colo il voi pune pe forum, poate mai vine cineva cu idei de imbunatatire a lui.

Partea de refresh inca nu am rezolvat-o... Poate stie cineva o solutie sa pot sa sterg valorile variabilelor $_POST!!! ca inainte de a da refresh, sa nu mai existe aceste valori?...

Alta problema ar fi cum pot sa trimit atasat in corpul emailului o imagine sau mai multe (embed images cred ca se cheama) ca sa nu fie nevoie sa se incarce de pe site-ul meu, deoarece se stie ca unii clienti de email nu permit afisarea lor (yahoo, etc.)?

Numai bine.

MarPlo Mesaje: 4343
ripe12 scrie: Partea de refresh inca nu am rezolvat-o... Poate stie cineva o solutie sa pot sa sterg valorile variabilelor $_POST!!! ca inainte de a da refresh, sa nu mai existe aceste valori?...

Alta problema ar fi cum pot sa trimit atasat in corpul emailului o imagine sau mai multe (embed images cred ca se cheama) ca sa nu fie nevoie sa se incarce de pe site-ul meu, deoarece se stie ca unii clienti de email nu permit afisarea lor (yahoo, etc.)?

Numai bine.
- Poti face din php un redirect, dupa ce trimite mail-ul. Cu:
header( 'Location: http:// www. site.net/pagina ) ;
Sau dupa ce trimite mail-ull setezi o sesiune pe care o verifici inainte de a trimite e-mail, daca ea exista afisezi un mesaj si nu mai trimiti.

- La a doua problema nu cunosc. Poate altcineva.

ripe12 Mesaje: 12
Asa cum am promis am sa pun mai jos scriptul pentru trimitere email putin mai cizelat :D. Cum am mai spus: din cauza ca scriptul face parte dintr-un ansamblu putin mai complex voi scoate liniile de cod pe care le consider legate de alte scripturi si voi pune in corpul scriptului acele lucruri care erau incluse cu (include() sau require() ). Din acest motiv exista "sansa" ca scriptul sa nu functioneze... Daca se intampla acest lucru va rog sa ma anuntati si, in masura timpului liber, voi incerca sa il repar.
NU UITATI: scriptul este gandit sa trimita mail-uri de pe un domeniu a carui server are activa functia mail()!!!, deci NU STIU daca merge de pe calculatorul vostru (evident facut srv. cu Xampp, Wamp, etc. + un client de mail ca Mercury sau altele)...
Daca puneti mai multe adrese de email la destinatar NEAPARAT sa le separati prin ; (punct si virgula!).
Din cauza ca nu stiu prea bine JavaScript m-am ajutat de DreamWeaver ca sa fac verificarile campurilor din formular, asa
ca a rezultat un cod JS destul de incarcat si cu o gramada de alte IF-uri de care nu avem nevoie, asta e...!
Rezolvand problema (dupa sfatul lui MarPlo) in care la un refresh trimitea inca o data mail-ul a trebuit sa fac inca un script pentru redirectionare in caz de refresh numit form_list.php in care obligatoriu trebuie pus:

<?php
session_start();
if (isset($_SESSION['email_enviado'])) unset ($_SESSION['email_enviado']);
//optional un link catre form_email.php
echo '<a href="form_email.php" title="Alt email">Trimitere alt email</a>';
?>

Numele scriptului este form_email.php
<?php
session_start();
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
#email {
position: absolute;
left: 144px;
width: 295px;
height: 24px;
top: 25px;
}
-->
</style>
<title>Formular trimitere mail</title>
<script type="text/javascript">
<!--
function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
} }
//-->
</script>
</head>
<body>

<?php

$attach = array();

function send_mail($to, $asunto, $msg, $attach) { //se creeaza functia pentru trimis email-uri

$rand_hash = md5(time());
$mime_boundary = "==Multipart_Boundary_x".$rand_hash."x";

//dirección del remitente y headers
$headers = "From: Nume Prenume<adresa_mail@siteweb.ro>" . "\n";

//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: adresa_mail@siteweb.ro" . "\n";

//ruta del mensaje desde origen a destino
$headers .= "Return-path: adresa_mail@siteweb.ro" . "\n";

if (count($attach)<1) {
$headers .= "MIME-Version: 1.0" . "\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\n";
}
else { // Aici se seteaza includerea atasamentelor (daca exista fisiere adaugate)
$headers .= "MIME-Version: 1.0\n".
"Content-Type: multipart/mixed;\n".
' boundary="'.$mime_boundary.'"';
$msg .= "Un multi-part mesaj in MIME format.\n\n".
'--'.$mime_boundary."\n".
"Content-Type:text/html; charset=\"iso-8859-1\"\n".
"Content-Transfer-Encoding: 7bit\n\n".$msg."\n\n";

for($i=0; $i<count($attach); $i++) { // Parcurge matricea cu datele fisierelor
if ($file = fopen($attach[$i][0],'rb')) { // Deschide fisierul si preia datele din el
$data = fread($file, filesize($attach[$i][0]));
fclose($file);
}

// Codeaza date preluate cu MIME base64 si le separa in parti mai mici
$data = chunk_split(base64_encode($data));

// Adauga datele fisierului in mesajul mail-ului
$msg .= '--'.$mime_boundary."\n".
'Content-Type: '.$attach[$i][2].";\n".
' name="'.$attach[$i][1]."\"\n".
"Content-Transfer-Encoding: base64\n\n".$data ."\n\n".
'--'.$mime_boundary."\n";
}
}

//trimitere email
if (mail($to, stripslashes($asunto), stripslashes($msg), $headers))
return 'Mesajul a fost trimis cu succes';
else return 'Error: mesajul nu a putut fi trimis';
}

if (!isset($_POST['cuerpo_email'])) { //Verifica daca e pentru prima oara in script
$emails='';
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="POST" enctype="multipart/form-data" name="form1" id="form1" onsubmit="MM_validateForm(\'cuerpo_email\',\'\',\'R\',\'emails\',\'\',\'RisEmail\');return document.MM_returnValue">
<div id="email">Destinatar:
<label>
<textarea name="emails" id="emails" rows="3" cols="70" wrap="soft">'.$emails.'</textarea><br /><br />
</label>
Subiect:
<label>
<input type="text" name="asunto_email" id="asunto_email" size="80" maxlength="90" /><br /><br />
</label>
Scrie mesajul:
<label>
<textarea name="cuerpo_email" id="cuerpo_email" rows="12" cols="70" wrap="hard"></textarea><br /><br />
</label>
Adaugare fisiere:
<input type="file" name="archivo1" /><br />
<input type="file" name="archivo2" /><br /><br />
<input type="submit" name="submit" value="Trimite email" />
</div>
</form>';
}
else { //A trecut deja prin formular si aduce datele pentru trimterea mailului
if (!isset($_SESSION['email_enviado'])) { //Daca testul e TRUE inseamna ca trimite emailul pentru prima oara!
$_SESSION['email_enviado']=TRUE;
if (isset($_POST['asunto_email'])) $asunto_email=$_POST['asunto_email'];
$cuerpo_email=str_replace(" ","&nbsp;", $_POST['cuerpo_email']); //Transforma toate spatiile in entitati ale acestora
$mesaj = '
<html>
<head>
<style type=3D"text/css"><!-- DIV {margin:0px;} --></style>
</head>
<body>
<a href="http://www.nume_site.ro" target="_blank"> <img src="http://www.nume_site.ro/banner.png" /></a> //Unde www.nume_site.ro este site-ul tau, iar banner.png un link al unei imagini care va fi trimis in corpul mailului. Nu e obligatorie aceasta linie!
<br /><br />
<div style=3D"font-family:times new roman, new york, times, serif;font-size:12pt;color:#000000;">'.nl2br($cuerpo_email).'
</div>
<br /><br />
<a href="http://www.nume_site.ro" target="_blank" title="Site-ul meu"><h3>Numele site-ului</h3></a> //Daca mai vrei un link...
</body>
</html>';

if (is_uploaded_file($_FILES['archivo1']['tmp_name'])) { //se incarca fisierul in srv in locatia temporara
$uploadpath = $_FILES['archivo1']['tmp_name'];
$name1 = basename($_FILES['archivo1']['name']);
$attach[] = array($uploadpath, $name1, 'application/octet-stream'); //se adauga fisierul ca array
}
if (is_uploaded_file($_FILES['archivo2']['tmp_name'])) {
$uploadpath = $_FILES['archivo2']['tmp_name'];
$name2 = basename($_FILES['archivo2']['name']);
$attach[] = array($uploadpath, $name2, 'application/octet-stream');
}

$emails=explode(";",$_POST['emails']); //Se transforma array-ul in matrice cu criteriu de split dupa ;
foreach ($emails as $to) { // se parcurge matrice unde $to -> adresa de e-mail a dest.
$to=trim($to);
if (strlen($to)!="") {
// Acum se apeleaza functia, cu aceste date pe care le va trimite la serverul de mail
$go_mail = send_mail($to, $asunto_email, $mesaj, $attach);
echo $go_mail.' a '.$to.'<br />'; // Afiseaza rezultatul
}
}
$direcciones=$_POST['emails'];
$msj='Email-uri trimise la: '.$direcciones.'<br /><br />'.$mesaj;
send_mail('emailul_tau_de_beck-up@site.com', $asunto_email, $msj, $attach); //Trimite acelasi mail la o adresa specificata de tine pentru a nu fi nevoit sa-l salvezi intr-o baza de date, in plus adauga in mesaj lista de adrese de email la care a fost trimis email-ul
}
else echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=form_list.php">'; //Rezulta ca emailul a mai fost trimis o data si redirectioneaza catre pagina form_list.php
}
?>

</body>
</html>

Subiecte similare