Autore Topic: Modulo Email con SMTP - websitex5 v8  (Letto 21686 volte)

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #30 il: 14 Marzo, 2012, 19:25:58 »
Eccomi!

Ciao serzio, ciao milux

Ho fatto tutte le prove che mi hai indicato serzio,
Avevo fatto cattivi pensieri  ;) ... scherzo.

la prima prova ha dato questo risultato:
//Form Data

Nel primo tentativo ti ho fatto inserire una riga "echo ...;" che è stata eseguita correttamente prima di visualizzare l'errore, quindi significa che l'esecuzione fino a quel punto è ok.

la seconda prova ha dato questo risultato:
//Form Data
// Template

la terza prova ha dato questo risultato:
//Form Data
// Template
//Send email to owner

Fin qui abbiamo la prova che l'esecuzione dello script supera la prima, la seconda sezione e si ferma senza errori all'inizio della sezione "Send email to owner".

la quarta prova ha dato questo risultato:
//Form Data
// Template
//Send email to owner
Invalid address: Marco (che sarebbe il nome inserito nel campo del modulo mail dove è richiesto il nome del compilante)
//Send email to user


Ovviamente non ne capisco il significato...
Attendo vostro parere!

Grazie!



E qui cominciano i dolori e ... gli errori da correggere sulla sezioni dall'invio all'owner in poi.

Allora, intanto possiamo togliere tutte le righe "echo ..." fino a quella del "Send email to owner" in quanto non ci servono più ed iniziamo a correggere il primo problema sull'email dell'owner o del mittente, per l'appunto, ma dobbiamo capire quale dei due è sbagliato, ma soprattutto quale delle due sottosezioni (ne abbiamo due: invio di incomedia ed invio con smtp) e quindi proviamo a controllarli entrambi con delle righe "echo".

Attenzione adesso. Hai una serie di righe simili alle seguenti che sono relative ad un file per un mio form (diverso dal tuo):

Citazione
echo "//Send email to owner<br>"; // riga aggiunta per il debug
echo "Il mittente è:" . $_POST["Itm_8_00_1"] . "<br>"; // riga aggiunta per il debug che visualizza se il mittente è corretto
//Send email to owner
$txtMsg = "";
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;
$oEmail = new imEMail(($imForceSender ? $_POST["Itm_8_00_1"] : "info@serzio.it"),"info@serzio.it","dal serzio.it mailsmtp","iso-8859-1");
$oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
$oEmail->setHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
// $oEmail->send(); // riga modificata in commento per inibire l'invio con il metodo di incomedia

echo "// mail con smtp<br>"; //  riga aggiunta per il debug
// mail con smtp
 $mail = new PHPMailer(true);
 $mail->IsSMTP(); // telling the class to use SMTP
  try {
   $mail->Host       = "mail.serzio.it"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "xxxxxxxx"; // SMTP account username
   $mail->Password   = "yyyyyyyyy";        // SMTP account password
   $mail->AddAddress('info@serzio.it', '');  // ATTENZIONE ad inserire l'indirizzo email scritto bene con gli apici corretti (due coppie separate dalla virgola)
   $mail->SetFrom($_POST["Itm_8_00_1"], '');
   $mail->Subject = 'dal serzio.it mailsmtp (owner) + PHPMailer Test Subject via mail(), advanced';
  $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
//   echo "Message Sent OK</p>\n";
 } catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
 } catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
 }




echo "//Send email to user<br>"; exit(); //  riga aggiunta per il debug e per fermare l'esecuzione
//Send email to user
...

In rosso ci sono le righe da aggiungere o modificare per il debug, ovvero per capire dove si trova il problema. Le parti relative ai commenti ( // ) puoi anche non inserirle, io le ho scritte per farti capire il codice.

Esegui le modifiche che ti ho suggerito e che sono molto semplici e prova a rieseguire.

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #31 il: 14 Marzo, 2012, 19:59:05 »
Modifiche effettuate,
il risultato è questo:



//Send email to owner
Il mittente è:
// mail con smtp
Invalid address: Marco
//Send email to user




...è un bene o un male?

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #32 il: 14 Marzo, 2012, 20:19:23 »
Modifiche effettuate,
il risultato è questo:



//Send email to owner
Il mittente è:
// mail con smtp
Invalid address: Marco
//Send email to user




...è un bene o un male?

Secondo te? Cosa ne pensi?  ;)
Sarebbe bello che tu partecipassi con le tue considerazioni su quello che stiamo facendo .... oppure che tu dicessi "non ho capito" questo o quello ..... in fondo stiamo utilizzando questo approccio proprio per lo scopo di far capire quello che si fa.  ;)


E' un bene. Stiamo facendo passi avanti, lentamente, ma si va avanti. Abbiamo appurato che nella sezione email con smtp c'e' un errore, che non è il 500, ma è sempre un errore da risolvere.

L'errore è evidenziato dalle righe quotate in rosso e che ci dicono che dipende dal fatto che hai sbagliato ad inserire il riferimento all'email del mittente inserito nel form.

Quindi dovresti tornare indietro di qualche post fino alla ricerca del campo email presente nel tuo form che avrà una forma simile a quella che ti ho cerchiato nella pagina html che contiene il form.

[ Guests cannot view attachments ]


pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #33 il: 15 Marzo, 2012, 15:40:08 »
Eccomi di nuovo!


Caro serzio, mi sono "massacrato" gli occhi per cercare nel mio form
qualche cosa di simile al form che tu sopra mi hai cerchiato in rosso...nulla!
Vedo sempre troppe differenze...quindi non capisco cosa devo modificare.


Però tu mi hai scritto: "hai sbagliato ad inserire il riferimento all'email del mittente inserito nel form."
Allora ho "studiato" un pò i vari post che mi hai inviato (studiato è un termine eccessivo, li ho osservati meglio!)
ed ho identificato una stringa che mi è sembrato si riferisse all'indirizzo mail del mittente.
Ho quindi modificato il "riferimento all'email del mittente", ed ora il form mail
funziona. Mi è arrivata la mail che ho inviato come prova.


Mi arriva in modo "strano", con la dicitura: PHPMailer Test Subject via mail (ed il soggetto della mail)
Ma intanto arriva e non è affatto poco!
Non arriva però la conferma al mittente.
Inoltre, la pagina che viene fuori dopo l'invio del modulo mail,
è la seguente:





//Send email to owner
Il mittente è:
// mail con smtp
Message Sent OK
//Send email to user


Tu dirai: "accontentati!" ... ed hai ragione, ma...mi pare un pò poco professionale
non inviare una mail di conferma e non far visualizzare una pagina di avvenuto invio.

Che ne dici?

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #34 il: 15 Marzo, 2012, 15:57:47 »
......dimenticavo!!
ora ho tolto la dicitura "exit", così non da il "risultato" nella pagina che esce dopo l'invio mail.
La mail arriva correttamente alla mia posta, ma chi compila il modulo mail sul sito
dopo l'invio mail ora riceve nuovamente "errore 500".


serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #35 il: 15 Marzo, 2012, 19:31:02 »
Eccomi di nuovo!


Caro serzio, mi sono "massacrato" gli occhi

Benvenuto tra noi. Adesso hai assaggiato cosa significa essere un programmatore. Ti manca la parte relativa al "cervello che fuma", però.  ;)

...
Mi è arrivata la mail che ho inviato come prova.


Mi arriva in modo "strano", con la dicitura: PHPMailer Test Subject via mail (ed il soggetto della mail)

Se rileggi il listato di qualche post sopra, ti accorgi che c'e' una riga:

Citazione
$mail->Subject = 'dal serzio.it mailsmtp (owner) + PHPMailer Test Subject via mail(), advanced';

in cui la parte evidenziata in rosso serve ad impostare il campo "subject" dell'email, ovvero quello che a te non piace e che devi personalizzare. Strano che tu non ci abbia fatto caso.  ;)

Ma intanto arriva e non è affatto poco!
Non arriva però la conferma al mittente.

La conferma al mittente deve essere ancora lavorata .... stesso procedimento dell' owner, ma con destinatario e dati diversi. Ci arriveremo.

 
Inoltre, la pagina che viene fuori dopo l'invio del modulo mail,
è la seguente:





//Send email to owner
Il mittente è:
// mail con smtp
Message Sent OK
//Send email to user


Tu dirai: "accontentati!" ... ed hai ragione, ma...mi pare un pò poco professionale
non inviare una mail di conferma e non far visualizzare una pagina di avvenuto invio.

Che ne dici?

Io non mi accontento nemmeno quando riesco ad ottenere esattamente quello che ho in mente. Apri i tuoi orizzonti ...

Cancella tutte le righe di commento, echo ed exit che abbiamo inserito fino alla sezione //Send email to user e proseguiamo ... il try/catch lascialo .... pubblica la tua parte //send to user ..... così vediamo quale è la situazione attuale.

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #36 il: 17 Marzo, 2012, 16:37:19 »
Ciao serzio, scusa se ci ho messo un pò di tempo ma ho provato a fare alcuni
tentativi del tutto inutili...


allora,


poi ho fatto quanto mi dicevi, togliendo gli echo e gli exit fino a send mail to user.
Il risultato è che la mail viene inviata correttamente MA la pagina che esce dopo è
sempre il solito "errore 500".


Questo sotto è quanto è ora presente nel form mail del sito:



<?php
//Check Captcha
 include("../captcha/imkeys.php");
 for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");


include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php");


//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto il sito?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto il sito?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta relativa al: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta relativa al:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";


// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";


//send email to owner
 $txtMsg = "";
 $htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;
 $oEmail = new imEMail("xxxxxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxxx","dal sito web","iso-8859-1");
 $oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
 // $oEmail->send();


 
// mail con smtp
 $mail = new PHPMailer(true);
 $mail->IsSMTP(); // telling the class to use SMTP
 
 try {
   $mail->Host       = "xxxxxxxxxxxxxxxxx"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "xxxxxxxxxxxxxxxxxxxxxx"; // SMTP account username
   $mail->Password   = "xxxxxxxxxx";        // SMTP account password
   $mail->AddAddress('xxxxxxxxxxxxxxxxxxxxxxxx','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'xxxxxxxxx');
   $mail->Subject = 'PHPMailer Test Subject via mail(xxxxxxxxxxx), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
 } catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
 } catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
 }


echo "//Send email to user<br>"; 
//Send email to user




echo "//Send email to user<br>";
//send email to user
$txtMsg = "--- NON RISPONDETE A QUESTA E-MAIL ---\r\n\r\nHai inoltrato una richiesta alla sezione xxxxxxxxxxxxxxxxxxxxxx\r\n\r\nTi ringraziamo di aver visitato il nostro sito!\r\nStiamo analizzando la tua richiesta,\r\nti risponderemo appena possibile!\r\n\r\nNon dimenticare di controllare anche la casella SPAM della\r\ntua mail, in quanto può capitare che il tuo client\r\ndi posta elettronica inserisca per errore nello spam le nostre risposte!\r\n";
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione xxxxxxxxxxxxxxxxxxxxxxxx<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;
$oEmail = new imEMail("xxxxxxxxxxxxxxxxxxxxxxx  ",$_POST["Itm_8_03_4"],"Grazie di averci contattato!","iso-8859-1");
$oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
$oEmail->setHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$oEmail->send();
echo "header<br>"; exit(); ("Location: ../faq.html");
?>


serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #37 il: 18 Marzo, 2012, 16:39:57 »
Ciao serzio, scusa se ci ho messo un pò di tempo ma ho provato a fare alcuni
tentativi del tutto inutili...


allora,


poi ho fatto quanto mi dicevi, togliendo gli echo e gli exit fino a send mail to user.
Il risultato è che la mail viene inviata correttamente MA la pagina che esce dopo è
sempre il solito "errore 500".

Dobbiamo ancora fare qualche modifica alla prima parte dello script, quella relativa all'invio all'owner che diventerà questa che segue:

Codice:
Only registered users can see contents. Please click here to Register or Login.
Non capisco la parte in rosso, ma mi adeguo:
$mail->SetFrom($_POST["Itm_8_03_4"],'xxxxxxxxx');
Come dicevo, al limite avrei sostituito ... ma proprio al limite ... la parte in rosso con $_POST["Itm_8_03_1"] . " " . $_POST["Itm_8_03_2"] .

Mentre la riga in verde:
$mail->Subject = 'PHPMailer Test Subject via mail(xxxxxxxxxxx), advanced'; 

l'avrei scritta così, in modo da avere anche una traccia sulla provenienza del visitatore:
$mail->Subject = 'Email dal sito web da ' . $_SERVER['REMOTE_ADDR'];

A questo punto possiamo passare alla sezione di invio verso il cliente (user). Partiamo dal codice che hai postato, in modo da non confonderci ed il procedimento è abbastanza simile al precedente. L'errore 500, prima o poi sparirà man mano che sistemeremo il codice anche se, come ti dicevo, ho una mezza idea su cosa possa causarlo, ma non voglio correre e dobbiamo arrivarci ragionando.

Il codice di partenza è il seguente:

Codice:
Only registered users can see contents. Please click here to Register or Login.
A cui toglierei qualche riga inutile ed ovviamente rimarrebbe da modificare il metodo di invio con la nuova classe phpmailer. Il codice potrebbe diventare simile al seguente:

Codice:
Only registered users can see contents. Please click here to Register or Login.
Attenzione alle modifiche. Facciamo una prova e ... se non ho dimenticato nulla .... dovrebbe funzionare.
« Ultima modifica: 18 Marzo, 2012, 17:01:52 da serzio »

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #38 il: 19 Marzo, 2012, 11:30:34 »
Ciao serzio!


Ho fatto cinque modifiche del file, mettendo o togliendo o sostituendo alcune
righe con i suggerimenti che mi indicavi come tue idee, o lasciando quelle righe
come le crea incomedia.


Ho provato ad inviare ogni volta delle mail, ma non viene inviata nessuna mail,
ne al mittente ne al destinatario.


Sto provando a ricontrollare se ho commesso errori di "apici" o "virgolette".
Comunque non da nessun errore, mi riporta su una pagina bianca
ogni volta, ad ogni tentativo che ho fatto.


Ti scrivo di seguito ciò che ora è nel form mail del sito:



<?php
//Check Captcha
include("../captcha/imkeys.php");
for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");

include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php");

//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";

// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";

//send email to owner
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;

$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

$mail->Host       = "XXXXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "xxxxxxxxxxxx";        // SMTP account password
$mail->AddAddress('XXXXXXXXXXXXXXXXXX','');
$mail->SetFrom($_POST["Itm_8_03_4"],'XXXXXXXXXXX');
$mail->Subject = 'PHPMailer Test Subject via mail(XXXXXXXXXX), advanced';$mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();

// mail con smtp
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

try {
   $mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "XXXXXXXXXXXXXXXXXXXX"; // SMTP account username
   $mail->Password   = "XXXXXXXX";        // SMTP account password
   $mail->AddAddress('XXXXXXXXXXXXXXXXXXXX','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'XXXXXXXXXXXX');
   $mail->Subject = 'PHPMailer Test Subject via mail(XXXXXXXXXXX), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
}

//send email to user
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione XXXXXXXXXXXXXXXXXXXXXX<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;

$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "XXXXXXXXXXXX";        // SMTP account password
$mail->AddAddress('XXXXXXXXXXXXXXXXXXXXX','');
$mail->SetFrom('noreply@XXXXXXXXXXXXXXXX, '');  // impostato il mittente dell'email su noreply@sitoweb
$mail->Subject = 'Grazie di averci contattato!';  // impostato il subject dell'email
$mail->MsgHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();

@header("Location: www.XXXXXXXXXXXXX.XXX "); // redirezione sulla pagina index.html da personalizzare
?>






Mi avevi detto di dare un mio parere SE lo avessi avuto...
io ti dico una cosa che ho notato con i miei mille tentativi sciocchi,
ma prendila come detta da un bambino ignorante, perchè tale sono
difronte a queste stringhe!
Allora, nel mio post precedente ti ho scritto ciò che erano i codici
funzionanti (composti tramite le tue indicazioni e che finalmente
inviavano la mail). Ho notato che questa riga:  // $oEmail->send();
aveva due slash che la precedevano mentre la riga originale
creata da website era così:  $oEmail->send();
Ecco, togliendo i due slash (//) mi dava errore 500 e NON inviava più
le mail al destinatario. Invece lasciando i due slash (//) rimaneva
errore 500 ma inviava la mail al destinatario e non al mittente
(come infatti già ti avevo scritto).
Fosse lì l'errore?
Ti prego non farci grasse risate, è solo un dettagli che mi è saltato agli occhi
che mi stanno diventando incrociati a forza di scrutare queste righe e stringhe di codici!!!!


Ciao!


serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #39 il: 19 Marzo, 2012, 12:33:07 »
Ciao serzio!

...
Ti prego non farci grasse risate, è solo un dettagli che mi è saltato agli occhi
che mi stanno diventando incrociati a forza di scrutare queste righe e stringhe di codici!!!!


Ciao!


Com'è dura la vita del programmatore ...  :lol:

Non sei stato attento  ;) ... oppure ti sei stancato ... purtroppo occorre molta pazienza, metodo e soprattutto cercare di capire cosa si sta facendo.

Cerchiamo di fissare alcuni concetti fondamentali. Il procedimento di invio delle due email è costituito da una serie di passi non sempre dipendenti tra loro, ma che vengono eseguiti in sequenza fino al termine o fino ad un errore.

1) Dichiariamo quello che ci servirà per l'invio, ovvero le parti reperibili in altri file ma che sono fondamentali (le sequenze <?php e ?> sono di apertura e chiusura dello script)

Citazione
<?php
include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php"); // mailsmtp


2) Sezione della gestione captcha

Citazione
//Check Captcha
include("../captcha/imkeys.php");
for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");


3) Gestione del Form, ovvero prepariamo i dati da inviare via email a partire dal form compilato dall' user e da cui vediamo chiaramente che l'email del compilante è quella in rosso, mentre nome e cognome sono in verde

Citazione
//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";


4) Gestione del template (colori, bordi della tabella, font e cavolate simili)

Citazione
// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";


5) Invio dell'email all'OWNER (il proprietario del sito web)

Icm propone l'invio utilizzando la classe imEMail istanziando (inizializzando) un oggetto chiamato $oEmail, ma che nel tuo caso NON è utilizzabile e ti genera errori di vario tipo e quindi dobbiamo utilizzare un oggetto istanziato dalla classe PHPMailer utilizzando il protocollo SMTP.

Citazione
//send email to owner
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;

$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

$mail->Host       = "XXXXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "xxxxxxxxxxxx";        // SMTP account password
$mail->AddAddress('XXX_indirizzo_email_proprietario_del_sito_XXX','');
$mail->SetFrom($_POST["Itm_8_03_4"], $_POST["Itm_8_03_1"] . " " . $_POST["Itm_8_03_2"]);
$mail->Subject = 'Email dal sito web da ' . $_SERVER['REMOTE_ADDR'];
$mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();


6) Invio dell'email allo USER (il visitatore che compila il form)

Citazione
//send email to user
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione XXXXXXXXXXXXXXXXXXXXXX<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;

$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "XXXXXXXXXXXX";        // SMTP account password
$mail->AddAddress($_POST["Itm_8_03_4"], '');
$mail->SetFrom('noreply@XXXXXXXXXXXXXXXX', '');  // impostato il mittente dell'email su noreply@sitoweb
$mail->Subject = 'Grazie di averci contattato!';  // impostato il subject dell'email
$mail->MsgHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();


7) Redirezione su una pagina diversa

Citazione
@header("Location: www.XXXXXXXXXXXXX.XXX "); // redirezione sulla pagina index.html da personalizzare
?>


Attenzione a non fare un minestrone, a dispetto di quanto fatto fin'ora, ti ho elencato tutte le sezioni di cui abbiamo discusso via via.

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #40 il: 19 Marzo, 2012, 18:31:52 »
...no... mi sono nuovamente perso...
Ho modificato l'invio mail al destinatario (send mail to user)
così che la mail venga inviata all'indirizzo che l'utente
ha inserito nel campo modulo.
Ma...non va...
Leggo e rileggo i codici e non trovo altri errori.
E non invia la mail ne a me ne al mittente.


Una cosa poi non capisco...
Il riepilogo che mi hai scritto è chiaro e fa comprendere
bene le varie parti e la sequenza per l'invio dei vari dati
sia al mittente che al destinatario.
Ma allora a cosa servono le stringhe che seguono:



echo "// mail con smtp<br>"; 
// mail con smtp


ovvero queste righe:


$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

try {
   $mail->Host       = "xxxxxxxxxx"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "xxxxxxxxxxxx"; // SMTP account username
   $mail->Password   = "xxxxxx";        // SMTP account password
   $mail->AddAddress('xxxxxxxxxxxxx','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'foto ritocco');
   $mail->Subject = 'PHPMailer Test Subject via mail(foto ritocco), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
}




Se user è l'utente che invia e owner è il destinatario proprietario del sito,
cosa sono le stringhe sopra?


In ogni caso, non trovo l'errore...
continuerò a cercare, e in caso riscrivo.


Intanto ora i codici (che non funzionano) che ho inserito nel sito sono i seguenti:





<?php
//Check Captcha
include("../captcha/imkeys.php");
for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");

include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php");

//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";

// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";

//send email to owner
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;

$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

$mail->Host       = "XXXXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "xxxxxxxxxxxx";        // SMTP account password
$mail->AddAddress('XXXXXXXXXXXXXXXXXX','');
$mail->SetFrom($_POST["Itm_8_03_4"],'XXXXXXXXXXX');
$mail->Subject = 'PHPMailer Test Subject via mail(XXXXXXXXXX), advanced';$mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();

// mail con smtp
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

try {
   $mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "XXXXXXXXXXXXXXXXXXXX"; // SMTP account username
   $mail->Password   = "XXXXXXXX";        // SMTP account password
   $mail->AddAddress('XXXXXXXXXXXXXXXXXXXX','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'XXXXXXXXXXXX');
   $mail->Subject = 'PHPMailer Test Subject via mail(XXXXXXXXXXX), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
}

//send email to user
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione XXXXXXXXXXXXXXXXXXXXXX<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;

$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "XXXXXXXXXXXX";        // SMTP account password
$mail->AddAddress($_POST["Itm_8_03_4"], '');
$mail->SetFrom('noreply@XXXXXXXXXXXXXXXX, '');  // impostato il mittente dell'email su noreply@sitoweb
$mail->Subject = 'Grazie di averci contattato!';  // impostato il subject dell'email
$mail->MsgHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();

@header("Location: www.XXXXXXXXXXXXX.XXX "); // redirezione sulla pagina index.html da personalizzare
?>
« Ultima modifica: 19 Marzo, 2012, 20:26:15 da stesil »

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #41 il: 19 Marzo, 2012, 19:18:34 »
ho fatto un pò di altri tentativi per mia deduzione (stupidissima deduzione)
ma ovviamente NON hanno funzionato.


Per ora rimane il fatto che l'unico codice
funzionante (che almeno invia la mail al destinatario, ma non al mittente)
è il seguente codice:



<?php
//Check Captcha
include("../captcha/imkeys.php");
for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");


include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php");


//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto il sito?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto il sito?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta relativa al: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta relativa al:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";


// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";


//send email to owner
$txtMsg = "";
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;
$oEmail = new imEMail("xxxxxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxxx","dal sito web","iso-8859-1");
$oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
// $oEmail->send();


 
// mail con smtp
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

try {
   $mail->Host       = "xxxxxxxxxxxxxxxxx"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "xxxxxxxxxxxxxxxxxxxxxx"; // SMTP account username
   $mail->Password   = "xxxxxxxxxx";        // SMTP account password
   $mail->AddAddress('xxxxxxxxxxxxxxxxxxxxxxxx','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'xxxxxxxxx');
   $mail->Subject = 'PHPMailer Test Subject via mail(xxxxxxxxxxx), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
}


//send email to user

$txtMsg = "--- NON RISPONDETE A QUESTA E-MAIL ---\r\n\r\nHai inoltrato una richiesta alla sezione xxxxxxxxxxxxxxxxxxxxxx\r\n\r\nTi ringraziamo di aver visitato il nostro sito!\r\nStiamo analizzando la tua richiesta,\r\nti risponderemo appena possibile!\r\n\r\nNon dimenticare di controllare anche la casella SPAM della\r\ntua mail, in quanto può capitare che il tuo client\r\ndi posta elettronica inserisca per errore nello spam le nostre risposte!\r\n";
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione xxxxxxxxxxxxxxxxxxxxxxxx<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;
$oEmail = new imEMail("xxxxxxxxxxxxxxxxxxxxxxx  ",$_POST["Itm_8_03_4"],"Grazie di averci contattato!","iso-8859-1");
$oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
$oEmail->setHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$oEmail->send();
echo "header<br>"; exit(); ("Location: ../faq.html");
?>




Ho confrontato mille volte questo codice funzionante
(che almeno invia la mail al destinatario) con gli altri codici
di cui abbiamo parlato e che ci siamo scritti, ma
sono totalmente diversi in alcuni punti...
...solo che questo sopra funziona e gli altri no.
Ho provato ad aggiungere delle parti,
sempre in base a mie deduzioni dalle tue spiegazioni,
ma nulla...
ogni modifica apportata al codice che ti ho indicato sopra
in colore blu non porta a nessun risultato:
mail NON inviata al destinatario
mail NON inviata al mittente
« Ultima modifica: 19 Marzo, 2012, 19:21:29 da pyskelletto »

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #42 il: 19 Marzo, 2012, 19:36:26 »
...no... mi sono nuovamente perso...
Ho modificato l'invio mail al destinatario (send mail to user)
così che la mail venga inviata all'indirizzo che l'utente
ha inserito nel campo modulo.
Ma...non va...
Leggo e rileggo i codici e non trovo altri errori.
E non invia la mail ne a me ne al mittente.

... non sei stato attento. Praticamente ti ho scritto il codice esattamente come avresti dovuto inserirlo tu. Tipo "pappa pronta" per capirci. Lascia stare tutto quanto e segui me ed il codice che ti ho inserito nell'ultimo mio post (a parte questo)

Una cosa poi non capisco...
Il riepilogo che mi hai scritto è chiaro e fa comprendere
bene le varie parti e la sequenza per l'invio dei vari dati
sia al mittente che al destinatario.
Ma allora a cosa servono le stringhe che seguono:

echo "// mail con smtp<br>"; 
// mail con smtp

La prima serve a stampare la stringa "// mail con smtp" e va a capo (il br).
La seconda è un commento e quindi non serve a nulla se non a fare capire che da quel punto comincia la parte che gestisce l'invio con l'smtp.
 

ovvero queste righe:


$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP

La prima serve ad istanziare un nuovo oggetto chiamato $mail dicendo che esso sarà di tipo PHPMailer. In gergo tecnico si dice che $mail è un'istanza della classe PHPMailer.
Se esistesse una classe PHPUomo che definisce un bipede pensante ...  :lol: ... per creare un nuovo ominide chiamato Paolino dovrei dare la seguente istruzione: $Paolino = new PHPUomo();

La seconda dice che l'oggetto $mail deve usare il protocollo SMTP.

try {
   $mail->Host       = "mail.xxxxxxxx.com"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "photo.retouching@sorprendere.com"; // SMTP account username
   $mail->Password   = "xxxxx";        // SMTP account password
   $mail->AddAddress('xxxxxxxxxxx@gmail.com','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'foto ritocco');
   $mail->Subject = 'PHPMailer Test Subject via mail(foto ritocco), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
}

Tutta la parte nel try viene eseguita con la capacità di intercettare gli eventuali errori (chiamati eccezioni, exception) e dirottare l'esecuzione (catch) sulle varie parti di codice.

Se la classe funziona, puoi anche omettere questo controllo .... al massimo ti va in errore e non viene visualizzato l'errore. Inoltre, la riga:

 echo "Message Sent OK</p>\n";

ha come effetto collaterale di inibire l'ultimo comando header() che ti fa il redirect.


 
Se user è l'utente che invia e owner è il destinatario proprietario del sito,
cosa sono le stringhe sopra?

Prova a ricopiare esattamente il codice che ti ho proposto modificando le sole parti con le XXXXX che ti ho evidenziato e che rappresentano le tue personalizzazioni.
« Ultima modifica: 19 Marzo, 2012, 20:13:11 da serzio »

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #43 il: 20 Marzo, 2012, 16:06:31 »
Ciao serzio!

perdonami è colpa mia...
pensavo di averti scritto che avevo già provato il codice
copiandolo esattamente come lo avevi scritto tu
(ovviamente personalizzando password, host ecc)
ma non aveva funzionato. Nessun invio di mail ne a me ne al
mittente, e nessun errore, solo una pagina bianca finale.

Il codice che ho provato (unendo quelli che tu mi hai scritto)
è il seguente:




<?php
include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php"); // mailsmtp
//Check Captcha
include("../captcha/imkeys.php");
for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");


//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";


// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";


//send email to owner
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "xxxxxxxxxxxx";        // SMTP account password
$mail->AddAddress('XXX_indirizzo_email_proprietario_del_sito_XXX','');
$mail->SetFrom($_POST["Itm_8_03_4"], $_POST["Itm_8_03_1"] . " " . $_POST["Itm_8_03_2"]);
$mail->Subject = 'Email dal sito web da ' . $_SERVER['REMOTE_ADDR'];
$mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();


//send email to user
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione XXXXXXXXXXXXXXXXXXXXXX<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;


$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "XXXXXXXXXXXX";        // SMTP account password
$mail->AddAddress($_POST["Itm_8_03_4"], '');
$mail->SetFrom('noreply@XXXXXXXXXXXXXXXX, '');  // impostato il mittente dell'email su noreply@sitoweb
$mail->Subject = 'Grazie di averci contattato!';  // impostato il subject dell'email
$mail->MsgHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();
@header("Location: www.XXXXXXXXXXXXX.XXX "); // redirezione sulla pagina index.html da personalizzare
?>




Poi ho fatto anche questo tentativo, aggiungendo la parte "mail con smtp"
che era presente nell'originale e nel codice che aveva funzionato:



<?php
include "../res/imemail.inc.php";
require_once("../PHPMailer/class.phpmailer.php"); // mailsmtp
//Check Captcha
include("../captcha/imkeys.php");
for ($i=0; $i<5; $i++)
    if ($oCharList[substr($_POST["Itm_8_03_cpf"],$i,1)] != substr($_POST["Itm_8_03_cpv"], $i,1))
      die("Error: Javascript must be enabled! (2)");
//Form Data
$txtData = "";
$htmData = "";
$txtData .= "Nome: " . $_POST["Itm_8_03_1"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Nome:</b></td><td>" . $_POST["Itm_8_03_1"] . "</td></tr>";
$txtData .= "Cognome: " . $_POST["Itm_8_03_2"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Cognome:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_2"] . "</td></tr>";
$txtData .= "città/provincia: " . $_POST["Itm_8_03_3"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>città/provincia:</b></td><td>" . $_POST["Itm_8_03_3"] . "</td></tr>";
$txtData .= "indirizzo e-mail: " . $_POST["Itm_8_03_4"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>indirizzo e-mail:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_4"] . "</td></tr>";
$txtData .= "Come hai conosciuto?: " . $_POST["Itm_8_03_5"] . "\r\n";
$htmData .= "<tr><td width=\"25%\"><b>Come hai conosciuto?:</b></td><td>" . $_POST["Itm_8_03_5"] . "</td></tr>";
$txtData .= "Descrivi la tua richiesta: " . $_POST["Itm_8_03_6"] . "\r\n";
$htmData .= "<tr><td width=\"25%\" bgcolor=\"#EEEEEE\"><b>Descrivi la tua richiesta:</b></td><td bgcolor=\"#EEEEEE\">" . $_POST["Itm_8_03_6"] . "</td></tr>";


// Template
$htmHead = "<table width=\"90%\" border=\"0\" bgcolor=\"#C0FFFF\" cellpadding=\"4\" style=\"font: 12px Tahoma; color: #0000C0; border: 1px solid #BBBBBB;\">";
$htmFoot = "</table>";


//send email to owner
$htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;
$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "xxxxxxxxxxxx";        // SMTP account password
$mail->AddAddress('XXX_indirizzo_email_proprietario_del_sito_XXX','');
$mail->SetFrom($_POST["Itm_8_03_4"], $_POST["Itm_8_03_1"] . " " . $_POST["Itm_8_03_2"]);
$mail->Subject = 'Email dal sito web da ' . $_SERVER['REMOTE_ADDR'];
$mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();



// mail con smtp
 $mail = new PHPMailer(true);
 $mail->IsSMTP(); // telling the class to use SMTP
 
 try {
   $mail->Host       = "YYYYYYYYYYYYYYYYYYYYY"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "YYYYYYYYYYYYYYYYYYYYY"; // SMTP account username
   $mail->Password   = "YYYYYYYYYYYYY";        // SMTP account password
   $mail->AddAddress('YYYYYYYYYYYYYYYYYYYYYY','');
   $mail->SetFrom($_POST["Itm_8_03_4"],'YYYYYYYYYYYYYY');
   $mail->Subject = 'PHPMailer Test Subject via mail(YYYYYYYYYYYY), advanced';
   $mail->MsgHTML("<html><body bgcolor=\"#063A69\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
   $mail->Send();
   echo "Message Sent OK</p>\n";
 } catch (phpmailerException $e) {
   echo $e->errorMessage(); //Pretty error messages from PHPMailer
 } catch (Exception $e) {
   echo $e->getMessage(); //Boring error messages from anything else!
 }




//send email to user
$htmMsg = $htmHead . "<tr><td>--- NON RISPONDETE A QUESTA E-MAIL ---<br><br>Hai inoltrato una richiesta alla sezione XXXXXXXXXXXXXXXXXXXXXX<br><br>Ti ringraziamo di aver visitato il nostro sito!<br>Stiamo analizzando la tua richiesta,<br>ti risponderemo appena possibile!<br><br>Non dimenticare di controllare anche la casella SPAM della<br>tua mail, in quanto può capitare che il tuo client<br>di posta elettronica inserisca per errore nello spam le nostre risposte!<br></td></tr>" . $htmFoot;


$mail = new PHPMailer(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "XXXXXXXXXXXXXXXXXX"; // SMTP server
$mail->SMTPAuth   = true;
$mail->Port       = 25;
$mail->Username   = "XXXXXXXXXXXXXXXXXXXXXXX"; // SMTP account username
$mail->Password   = "XXXXXXXXXXXX";        // SMTP account password
$mail->AddAddress($_POST["Itm_8_03_4"], '');
$mail->SetFrom('noreply@XXXXXXXXXXXXXXXX, '');  // impostato il mittente dell'email su noreply@sitoweb
$mail->Subject = 'Grazie di averci contattato!';  // impostato il subject dell'email
$mail->MsgHTML("<html><body bgcolor=\"#0000FF\"><center>" . $htmMsg . "<br>" . $htmHead . $htmData . $htmFoot . "</center></body></html>");
$mail->Send();
@header("Location: www.XXXXXXXXXXXXX.XXX "); // redirezione sulla pagina index.html da personalizzare
?>


Entrambi i tentativi non hanno funzionato.
L'unico codice che ha inviato la mail al solo destinatario
è quello riportato nel mio post sopra, il post numero 41.

Cosa ho sbagliato?
Ho copiato ed unito i codici che mi hai dato,
dove ho commesso l'errore?
Ho ricontrollato tutte le password e gli host smtp
e gli indirizzi mail...sono ok.
Che errore ho fatto?
 :-X :o




serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #44 il: 20 Marzo, 2012, 16:36:54 »
Ricontrolla il codice, c'e' una virgoletta (apice) mancante e sicuramente hai fatto qualche altro errore.

Ho fatto copia e incolla del php postato da te su un mio sito web di prova, ho modificato i parametri dell'smtp e quelli del form, ovviamente, ed il risultato è qui:

[ Guests cannot view attachments ] [ Guests cannot view attachments ]

Perfettamente funzionante.

Se hai ricontrollato tutto e ne sei assolutamente certo, cerchiamo di fare una diagnosi più accurata.

http://www.serzio.it/evo8/pyskelletto
« Ultima modifica: 20 Marzo, 2012, 16:43:29 da serzio »