Inviare email con foto

Salve, ho trovato un codice che mi permette di inviare una email con una foto, funziona tutto bene solo che la foto la prende dal server mentre io vorrei che la prendesse da una cartella del mio pc, quindi in locale, cosa devo modificare? Vi inserisco il codice:

<?php

// costruiamo alcune intestazioni generali

$header = "From: Inviante <inviante@dominio.org>\n";

$header .= "CC: Altro Ricevente <altroricevente@dominio.net>\n";

$header .= "X-Mailer: Il nostro Php\n";

// generiamo le stringhe utilizzate come separatori

$boundary = "==String_Boundary_x" .md5(time()). "x";

$boundary2 = "==String_Boundary2_y" .md5(time()). "y";

// costruiamo le intestazioni specifiche per un messaggio

// con parti relazionate

$header .= "MIME-Version: 1.0\n";

$header .= "Content-Type: multipart/related;\n";

$header .= " type=\"multipart/alternative\";\n";

$header .= " boundary=\"$boundary\";\n\n";

$messaggio = "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";

// il primo segmento del multipart/related

// è definito come multipart/alternative

$messaggio .= "--$boundary\n";

$messaggio .= "Content-Type: multipart/alternative;\n";

$messaggio .= " boundary=\"$boundary2\";\n\n";

// sezione alternativa in puro testo

$messaggio .= "--$boundary2\n";

$messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";

$messaggio .= "Messaggio alternativo in formato testo.\n\n";

// sezione alternativa in formato html

$messaggio .= "--$boundary2\n";

$messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

$messaggio .= "Content-Transfer-Encoding: 7bit\n\n";

$messaggio .= "<html><body>Questo messaggio è in formato <i>html</i> <img src=\"cid:MiaImmagine123\"></p></body></html>\n";

// chiusura della sezione multipart/alternative

$messaggio .= "--$boundary2--\n";

// seconda sezione del multipart/related contenente l'immagine

$messaggio .= "--$boundary\n";

$messaggio .= "Content-ID: <MiaImmagine123>\n";

$messaggio .= "Content-Type: image/jpeg\n";

$messaggio .= "Content-Transfer-Encoding: base64\n\n";

$allegato = "foto.jpg";

$data = filesize($allegato);

$file = fopen($allegato,'rb');

$data = fread($file,filesize($allegato));

fclose($file);

$data = chunk_split(base64_encode($data));

$messaggio .= "$data\n\n";

// chiusura della sezione multipart/related

$messaggio .= "--$boundary--\n";

?>

inviato 5 anni fa
MGbyte78
X 0 X

Devi prima inviare la foto al tuo server tramite un form e poi lo script potrà inviare l'email.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

In pratica volevo creare un form per inviare newsletter agl 'iscritti del mio sito solo che mi sarebbe piaciuto che nella stessa pagina del form dove c'è il campo textarea ci fosse stato anche un pulsante per inserire l'allegato come avviene quando crei un messaggio di posta con outlook, invece se ho capito bene tu mi dici prima di inviare l' immagine al server e poi nel mio caso compilare il form per inviare la email, quindi due operazioni distinte ....

risposto 5 anni fa
MGbyte78
X 0 X

No, puoi farlo con lo stesso form ma comunque devi inviare l'immagine e poi nell'email inserire quella che è stata caricata sul server.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Ok grazie, farò dunque due passaggi .....

risposto 5 anni fa
MGbyte78
X 0 X

Sono due passaggi nel momento in cui crei l'email. Con un form puoi inviare sia le informazioni per l'email sia gli allegati. Lato server unisci le varie cose ed invii l'email.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Allora non ho capito io, come faccio ad inviare le due informazioni se ho due form, uno per l'allegato e uno per il messaggio? Ho due tasti submit .....

In pratica io ho fatto così, ho inviato prima l'allegato sul server, poi ho reindirizzato il tutto alla pagina del form per il messaggio ....

risposto 5 anni fa
MGbyte78
modificato 5 anni fa
X 0 X

Scusa, non è così complicato: fai un unico form di invio!

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Scusa se non sono tanto pratico ma non riesco a capire ancora, io ho questi due form che ora inserisco qui in modo semplificato giusto per capirci:

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php"  METHOD="post">

  <INPUT NAME="UploadedFile" TYPE="file" >

 <INPUT TYPE="submit" VALUE="Invia file" class="bottone">

</FORM>

<form action="invio_newletter.php" method="post" name="form2" onSubmit="return controlla()">

<input type="text" name="oggetto" maxlength="100" size="70" class="text">      

<textarea name="testo" cols="90" rows= "10" size="20" class="textarea"></textarea>      

<input type ="reset" value="Cancella" class="bottone">

<input type="submit" value="Invia" class="bottone"></form>      

Quindi ho due pulsanti, uno per inviare il file e l'altro per inviare il messaggio, se clicco su uno l'altro form non viene preso in considerazione, o sbaglio?

risposto 5 anni fa
MGbyte78
X 0 X

Fallo diventare unico, per esempio così:

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php"  METHOD="post">
  <INPUT NAME="UploadedFile" TYPE="file" >
<input type="text" name="oggetto" maxlength="100" size="70" class="text">      
<textarea name="testo" cols="90" rows= "10" size="20" class="textarea"></textarea>      
<input type ="reset" value="Cancella" class="bottone">
<input type="submit" value="Invia" class="bottone"></form>   

Ovvio che devi ricontrollare a quale script mandi l'upload dei dati e i controlli di invio.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

ok ora ho capito, grazie. :bye:

risposto 5 anni fa
MGbyte78
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda