Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    strano problema con l'invio mail in HTML da PHP

    ciao a tutti,
    il mio hoster ha da poco riconfigurato il server (Linux) su cui risiede un sito da me gestito. Questo sito ha una sezione per l'invio di nwesletter tramite PHP in formato HTML.
    Ha sempre funzionato correttamente, tra le altre cose lo script è lo stesso utilizzato su tutti i nostri siti.
    Da dopo la riconfigurazione però su questo ha smesso di funzionare in modo corretto. Le mail vengono inviate ma il codice HTML non viene interpretato ma trattato come solo testo.. VVoVe:

    Ora i gestori dicono che è colpa nostra, io sono certo che dipenda da una loro configurazione....anche perchè ho provato a pubblicare lo stesso sito su un altro hosting e tutto funziona alla grande.

    Qualcuno mi sa dire cosa potrebbe essere? Sembrerebbe che gli heder delle mail vengano riscritti...possibile?

    Vorrei rispondere ai gestori del server in modo inequivocabile dandogli anche delle indicazioni di massima sulle possibili cause...però io a livello di amministrazione di server sono in cattive acque...

    grazie cmq a tutti per l'attenzione
    Programmatore WEB e Progettista DB (ASP/SQL Server - PHP/MySQL - HTML/JS)
    Serve un sito internet? sono qui ..

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Non capita spesso di leggere post di persone che - pur non descrivendo nulla in particolare - usano l'Italiano come andrebbe usato da tutti. Complimenti.

    Enucleiamo il quesito...

    Puoi postare una mail MIME? Intendo il risultato del tuo script come arriva al destinatario. Magari potrebbe mancare qualche header...

    [.:: JaguarXF ::.]
    __________________

  3. #3
    ciao,
    prima di tutto grazie, sia della risposta che del complimento.

    So di essere stato poco dettagliato ma purtroppo al momento non ho a portata di mano ne gli script incriminati ne i risultati della loro esecuzione. O meglio ho il risultato prodotto nel caso di corretto invio:

    codice:
    Subject: Newsletter del 20/12/2005
    To: xxxxxxxx.xxxxxx@gmail.com
    MIME-Version: 1.0
    Content-type: text/html; charset=iso-8859-1
    From: Agenzia e Giurisprudenza<newsletter@agenziaegiurisprudenza.it>
    Return-Path: webserver@aruba.it
    Message-ID: <WEBS1768wSA1XvpFVjC0000012c@webs176.aruba.it>
    X-OriginalArrivalTime: 20 Dec 2005 09:27:09.0213 (UTC) FILETIME=[8CF214D0:01C60547]
    [...... codice html della mail....]
    questo è il test con esito positivo, stasera posto quello non funzionante e la parte di scrip che gestisce l'invio.

    Ma così, a naso, dici che sia verosimile un problema dovuto ad una configrazione del server?

    ciao e grazie
    Programmatore WEB e Progettista DB (ASP/SQL Server - PHP/MySQL - HTML/JS)
    Serve un sito internet? sono qui ..

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Ho troppo pochi elementi per riuscire a risponderti - sempre presupponendo che io sappia risponderti... :master:

    Il non riuscire a visualizzare una sottoparte HTML in genere implica che i boundary non rispettano lo standard MIME, per mia esperienza.

    Quello che dici potrebbe essere per carità, ma non la dò, sinceramente, come motivazione più probabile..

    Quando puoi, posta tutta la mail (sì insomma, accorcia ciò che non serve... )

    P.S.: tutta la mail: la salvi sul filesystem (come EML) e la apri con Notepad... Parlando in termini Winzozz..


    [.:: JaguarXF ::.]
    __________________

  5. #5
    ecco i dettagli del mio problema..

    questo è il codice PHP per l'invio:

    codice:
    // --- creazione delle intestazioni comuni per la mail ---
    $intestazioni = "";
    $intestazioni = "MIME-Version: 1.0\r\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $intestazioni .= "From: Agenzia e Giurisprudenza <xxxxxxx@xxxxxxx.xx>\r\n";
    
    $data = date("d/m/Y");
    $oggetto = "Newsletter del ".$data;
    // -------------------------------------------------------
    
    // ----------- creazione del corpo della mail ------------
    $corpo = "";
    $corpo .= "<table align='center' width='514' cellspacing='0' cellpadding='0' border='0'>\r\n";
    	[..............]
    $corpo .= "</table>\r\n";
    // -------------------------------------------------------
    
    // ----------- ciclo sugli utenti della mail per l'invio ------------
    $sql_ute = "Select .....";
    $risul_ute = mysql_query($sql_ute,$link);
    while ($row_ute = mysql_fetch_array($risul_ute,1))
    	{
    	// recupero l'indirizzo del destinatario
    	$to = $row_ute["campo"];
    	
    	// sostituisco nel corpo della mail la stringa #codiceutente# con il codice dell'ute a cui sto inviando
    	$corpo1 = "";
    	$corpo1 = str_replace("%codiceutente%",$row_ute["campo1"],$corpo);
    	
    	// invio della mail
    	mail($to,$oggetto,$corpo1,$intestazioni);
    	echo "Invio effettuato, torna alla home della newslettr.";
    	}
    quello che viene inviato sta nel file zip si trova quiqui. Ci sono i txt delle mail inviate correttamente e di quelle bacate più le rispettive immagini

    Spero che qualcuno mi sappia dare una dritta perchè io ho veramente esaurito le risorse....
    Programmatore WEB e Progettista DB (ASP/SQL Server - PHP/MySQL - HTML/JS)
    Serve un sito internet? sono qui ..

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Devo dirti che il metodo che usi per inviare HTML è non standard, e quindi - consentimi - sbagliato.

    Dà un'occhiata su html.it/corso PHP, c'è un tutorial che spiega come inviare mail in multipart.

    Prima leggilo, se non capisci sono qui.
    E leggi anche le specifiche MIME che trovi su Internet.

    Ciao!

    P.S.: aggiungo che a prima vista l'argomento può sembrare difficile, ma è una gran cacata invece. Quindi.. buona lettura!

    [.:: JaguarXF ::.]
    __________________

  7. #7
    Problema risolto...grazie mille!!

    non l'avevo vista quella guida, davvero utile e ben fatta. Molto chiara e semplice...10 e lode all'autore!..

    Tra le altre cose mi ha risolto anche un altro problema in cui ero incappato.

    Grazie per la dritta mark2x gentilissimo!

    ciao
    Programmatore WEB e Progettista DB (ASP/SQL Server - PHP/MySQL - HTML/JS)
    Serve un sito internet? sono qui ..

  8. #8
    Ciao,

    ho anche io un problema penso simile.. ho letto la guida (penso voi intendiate questa: http://php.html.it/articoli/leggi/91...tml-con-php/4/).. anzi in realtà la guida l'avevo usata proprio per creare il mio script.. ma ora mi trovo in difficltà e nn capisco perchè..

    Ho creato uno script che prende un file .eml, lo apre, sostiuisce degli header, e lo spedisce a degli indirizzi presi da un database.

    Sulla mia macchina in locale sunziona tutto alla perfezione (win + IIS come SMTP server), se invece trasporto il tutto su internet (server linux) non funziona più.. la mail che viene mandata ha nel corpo pure le intestazioni.. è tutto plain test, anche quello che dovrebbe essere HTML...

    Probabilmente in quella guida c'è la soluzione la mio problema.. ma nn la vedo!

    Allora.. questo è lo script:
    codice:
      //Analisi dei dati e dell'header
          $array = explode("\n",$data);
          foreach( $array as $key => $value ){
            //Cerco sino a che non arrivo al boundary
            if ( stristr($value,'boundary') ){
              $header .= $array[$key]."\n";
              unset($array[$key]);
              break;
            }
            //Elimino l'header "from"
            if ( @stristr($value,'from') ){
              unset($array[$key]);
            }
            //Elimino l'header "subject" - se l'oggetto è stato inserito in fase di creazione della mail lo sostituisco a quello standard
            if ( @stristr($value,'subject') ){
              if ( @strlen($value) > 12 ){
                $oggetto = @substr($value,strpos($value,':')+1);
              }
              unset($array[$key]);
            }
            else{
              $header .= $array[$key]."\n";
              unset($array[$key]);
            }
          }
    
          //Aggiungo From e Subject all'header
          $header_top .= "From: ".$from."\n";
          $header_top .= "Subject: ".$oggetto."\n";
    
          $data = implode("\n",$array);
    
          //Invio la mail
          $n_mail_blocco = 50;
          while ( $record = @mysql_fetch_assoc($records) ){
            $mailto = $record['mail'].',';
            $n_mail = 1;
            while ( ( $n_mail < $n_mail_blocco ) && ( $record = @mysql_fetch_assoc($records) ) ){
              $mailto .= $record['mail'].',';
              $n_mail++;
            }
            $mailto = substr($mailto,0,-1);
            $header_bcc = 'Bcc: '.$mailto."\r\n";
            if ( @mail($to,$oggetto,$data,$header_top.$header_bcc.$header) ){
              $stato = 0;
            }
          }
        }
    Ed ecco un esempio di mail sbagliata:
    codice:
    Date: Fri, 14 Jul 2006 09:12:20 +0200
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0044_01C6A725.9EAC7A50"
    
    
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Unsent: 1
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
    
    This is a multi-part message in MIME format.
    
    ------=_NextPart_000_0044_01C6A725.9EAC7A50
    Content-Type: text/plain;
    charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    
    cvdc
    cv
    dcv
    cxv
    
    
    -------------------------------------------------------------------------=
    -------
    =20
          blabla
        =20
          blabla ::: Cell=20
          blabla=20
          blabla=20
    
    ------=_NextPart_000_0044_01C6A725.9EAC7A50
    Content-Type: text/html;
    charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML><HEAD>
    <META http-equiv=3DContent-Type content=3D"text/html; =
    charset=3Diso-8859-1">
    <META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR>
    <STYLE></STYLE>
    </HEAD>
    <BODY bgColor=3D#ffffff>
    <DIV><FONT face=3DArial size=3D2>cvdc</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>cv</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>dcv</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>cxv</FONT></DIV>
    <DIV></DIV>
    <DIV>
    <HR>
    =20
    <DIV style=3D"TEXT-ALIGN: right">
    <TABLE style=3D"FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Arial">
      <TBODY>
      <TR>
        <TD style=3D"FONT-SIZE: 14px; TEXT-ALIGN: right" colSpan=3D2>blabla
    </TD></TR>
      <TR>
        <TD style=3D"TEXT-ALIGN: right">blabla</TD>
        <TD>::: Cell</TD></TR>
      <TR>
        <TD style=3D"TEXT-ALIGN: right>blabla</TD>
        <TD>::: Mail</TD></TR>
      <TR>
        <TD style=3D"TEXT-ALIGN: right">blabla<=
    /TD>
        <TD>::: Web</TD></TR></TBODY></TABLE></DIV></DIV></BODY></HTML>
    
    ------=_NextPart_000_0044_01C6A725.9EAC7A50--

  9. #9

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.