Visualizzazione risultati 1 fino 4 di 4

Discussione: [php]invio mail con allegati

  1. #1
    Guest

    Predefinito [php]invio mail con allegati

    ciao a tutti
    ho creato un codice per l'invio di newsletter con la possibilità di mandare anche un allegato...
    qualcuno mi dice perchè funziona praticmante tutto con il piccolo problema che in realtà il file che arriva nn è niente, mi spiego meglio: c'è il nome, la dimensione, il tipo, ma nn lo si apre...

    posto il codice

    Codice PHP:
    <?php

    include("configdust.inc.php");

    $oggetto=$_POST['oggetto'];
    $testo=$_POST['testo'];
    $password=$_POST['password'];

    $attach = $_FILES["allegato"]["tmp_name"];
    $file_name = $_FILES["allegato"]["name"];
    $file_type = $_FILES["allegato"]["type"];
    $file_size = $_FILES["allegato"]["size"];

    $boundary = md5(uniqid(microtime()));

    $file = @fopen($attach, "r");
    $contents = @fread($file, $file_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    @
    fclose($file);

    $mail_headers = "From: TheeDuSt <theedust@virgilio.it>\r\n";
    $mail_headers .= "MIME-version: 1.0\r\n";
    $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
    $mail_headers .= "X-attachments: $file_name\r\n";

    $mail_body = "--$boundary\n";
    $mail_body .= "Content-Type: text/plain; charset=us-ascii\r\n";
    $mail_body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $mail_body .= "$testo\r\n\r\n";
    $mail_body .= "--$boundary\r\n";
    $mail_body .= "Content-type: $file_type; name=\"$file_name\"\r\n";
    $mail_body .= "Content-Transfer-Encoding: base64\r\n";
    $mail_body .= $encoded_attach."\r\n";
    $mail_body .= "--$boundary--\r\n";






    if (
    $password != $pasw):
    echo
    "fanculo stronzo!!!";
    elseif (
    trim($testo) == "" or trim($oggetto) == ""):
    echo
    "i campi testo e oggetto debbono essere riempiti!";
    else:

    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");



    $query = "SELECT email,emailv FROM utenti";

    $result = mysql_query($query, $db);

    while (
    $row = mysql_fetch_array($result))
    {
    echo
    "$row[email]<br>";
    mail("$row[email]", "$oggetto", "$mail_body", "$mail_headers");
    sleep(1);
    echo
    "$row[emailv]<br>";
    mail("$row[emailv]", "$oggetto", "$mail_body", "$mail_headers");
    sleep(1);

    };

    echo
    "La mail dovrebbe essere stata mandata";

    mysql_close($db);
    endif;

    ?>
    Grazie

  2. #2
    Guest

    Predefinito

    prova così:
    Codice PHP:
    <?php

    include("configdust.inc.php");

    $oggetto=$_POST['oggetto'];
    $testo=$_POST['testo'];
    $password=$_POST['password'];

    $attach = $_FILES["allegato"]["tmp_name"];
    $file_name = $_FILES["allegato"]["name"];
    $file_type = $_FILES["allegato"]["type"];
    $file_size = $_FILES["allegato"]["size"];

    $boundary = md5(uniqid(microtime()));

    $file = @fopen($attach, "rb");
    $contents = @fread($file, $file_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    @
    fclose($file);

    $mail_headers = "From: TheeDuSt <theedust@virgilio.it>\n";
    $mail_headers .= "MIME-version: 1.0\n";
    $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\n";
    $mail_headers .= "Content-Transfer-Encoding: 8bit\n";

    $mail_body = "This is a multi-part message in MIME format.\n--$boundary\n";
    $mail_body .= "Content-Type: text/plain; charset=iso-8859-9\n";
    $mail_body .= "Content-Transfer-Encoding: 8bit\n\n" . $testo ."\n";

    $mail_body .= "--$boundary\nContent-type: $file_type;\n name=\"$file_name\"\n";
    $mail_body .= "Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$file_name\"\n";
    $mail_body .= chr(13) . chr(10).$encoded_attach."\n";






    if (
    $password != $pasw):
    echo
    "fanculo stronzo!!!";
    elseif (
    trim($testo) == "" or trim($oggetto) == ""):
    echo
    "i campi testo e oggetto debbono essere riempiti!";
    else:

    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");



    $query = "SELECT email,emailv FROM utenti";

    $result = mysql_query($query, $db);

    while (
    $row = mysql_fetch_array($result))
    {
    echo
    "$row[email]<br>";
    mail("$row[email]", "$oggetto", "$mail_body", "$mail_headers");
    sleep(1);
    echo
    "$row[emailv]<br>";
    mail("$row[emailv]", "$oggetto", "$mail_body", "$mail_headers");
    sleep(1);

    };

    echo
    "La mail dovrebbe essere stata mandata";

    mysql_close($db);
    endif;

    ?>
    ps
    io la parte cn "fanculo stronzo !!!" la cambierei...heheheh
    Ultima modifica di SoulHome : 20-04-2006 alle ore 23.06.39

  3. #3
    Guest

    Predefinito

    perfetto, così funziona.
    grazie mille

    ps
    io avrei messo password errata, ma nn è per me è per un mio amico...e lui ha voluto così... D'altronde in pratica siamo solo io e lui che possiamo mandare newsletter nessunaltro dovrebbe capitarci... :-)

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Visto che risolto, chiudo.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •