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

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #15 il: 08 Marzo, 2012, 14:59:09 »

Eccomi, forse ho capito qualche cosa in più...
...ma ancora non va...
Allora:


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


Riferito al codice sopra:
Ho capito che devo incollare il codice quì sopra e che devo mettere l'indirizzo mail del sito
in questione al posto delle scritte in NERETTO. Giusto?
Ma non ho capito cosa fare con la scritta che ti ho evidenziato in ROSSO (sempre sopra).
La lascio così come è oppure devo scriverci cosa?


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


Riferito al codice sopra:
Nella scritta che ho evidenziato in rosso (quì sopra) ci devo scrivere qualche cosa?
Se sì, cosa? Oppure la devo cancellare prima di incollare il codice nel file del mio sito?
Oppure posso lasciarla lì così e non fa nulla?
 
 try {
   $mail->Host       = "smtp.xxxxxxx.yyy"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "login@xxxxxxx.yyy"; // SMTP account username
   $mail->Password   = "password";        // SMTP account password


Riferito al codice sopra:
Nelle scritte che ho evidenziato in rosso (sopra) devo inserire:
l'SMTP della mail del mio sito
la USERNAME della stessa mail
la PASSWORD sempre della stessa mail
Devo poi apportare qualche altra modifica prima di incollare il codice nel file del sito?
I doppi slash (//) dopo le scritte che ho evidenziato in rosse, devono essere
cancellati? Le scritte che ho evidenziato in verde devo cancellarle?


   $mail->AddAddress('destinatario@xxxxxxx.yyy', 'pinco pallino');
   $mail->SetFrom('name@yourdomain.com', 'nome cognome mittente');


Riferito al codice quì sopra:
Al posto della scritta che ho evidenziato in rosso, devo inserire il destinatario...sarebbe
sempre l'indirizzo mail che sto cercando di sistemare? E' lo stesso indirizzo mail per cui
prima ho fornito SMTP, username e password? Oppure è l'indirizzo mail del client
di posta elettronica con cui leggo le mail del mio sito?

Al posto di "pinco pallino" che ho evidenziato in verde, cosa devo scrivere?
E al posto della scritta che sopra ho evidenziato in giallo? Devo inserire il "form action"
del file che sto modificando? Se no, cosa? Infine, al posto del "nome cognome mittente"
che ho evidenziato in viola...come posso scrivere il nome del mittente se non so chi è il mittente?
Devo inserirci dei codici? Quali? Dove li trovo?






   $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
   $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
   $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!
 }


Riferito al codice sopra:
Ecco, caro serzio, quì mi perdo ancora peggio...
Nel codice sopra, dove devo scrivere qualche cosa?
Quali frasi o parole devo sostituire e con cosa?
Devo scrivere qualche codice dentro qualche parentesi o virgoletta?
Devo cancellare il doppio slash finale con le parole in inglese che seguono?
Potresti segnarmi (con IMMENSA pazienza) in rosso cosa devo scrivere
e dove e all'interno di quali virgolette o di quali parentesi
del codice sopra?

Lo so che mi prenderesti a bastonate...ma veramente, solo
così posso riuscire in quest'impresa.

GRAZIE!

Attendo!

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #16 il: 08 Marzo, 2012, 16:35:16 »

Eccomi, forse ho capito qualche cosa in più...
...ma ancora non va...

Un'altra cosa importante: mai dire "non va" .... e basta. E' come andare dal medico e dire "mi fa male" .... si, ma cosa? Bisogna sempre specificare qualcosa in più, un messaggio di errore, qualche dettaglio che possa fornire un indizio .... altrimenti non resta che prendere atto del fatto che "non va", ma senza poter fare nulla per capire la causa.

Allora:


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


Riferito al codice sopra:
Ho capito che devo incollare il codice quì sopra e che devo mettere l'indirizzo mail del sito
in questione al posto delle scritte in NERETTO. Giusto?
Ma non ho capito cosa fare con la scritta che ti ho evidenziato in ROSSO (sempre sopra).
La lascio così come è oppure devo scriverci cosa?

Con l'esportazione del sito quel pezzetto di codice viene generato direttamente da website, in base ai dettagli che hai inserito nel pannello "INVIO" dell'oggetto email, ed è sufficiente lasciarlo li dopo averlo reso inerte togliendo o commentando la riga che contiene la chiamata al metodo (funzione) send().
 
 

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


Riferito al codice sopra:
Nella scritta che ho evidenziato in rosso (quì sopra) ci devo scrivere qualche cosa?
Se sì, cosa? Oppure la devo cancellare prima di incollare il codice nel file del mio sito?
Oppure posso lasciarla lì così e non fa nulla?

Queste due righe servono ad inizializzare un nuovo oggetto, chiamato $mail, definendo la classe a cui deve appartenere e dicendogli che deve usare l'SMTP. Quindi sono fondamentali per poter preparare una email con la classe PHPMailer .... mentre l'email di incomedia una la classe imEMail che non è predisposta per l'invio con la modalità che non ci interessa.
 
 
try {
   $mail->Host       = "smtp.xxxxxxx.yyy"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "login@xxxxxxx.yyy"; // SMTP account username
   $mail->Password   = "password";        // SMTP account password


Riferito al codice sopra:
Nelle scritte che ho evidenziato in rosso (sopra) devo inserire:
l'SMTP della mail del mio sito
la USERNAME della stessa mail
la PASSWORD sempre della stessa mail
Devo poi apportare qualche altra modifica prima di incollare il codice nel file del sito?
I doppi slash (//) dopo le scritte che ho evidenziato in rosse, devono essere
cancellati? Le scritte che ho evidenziato in verde devo cancellarle?

 Nessuna modifica oltre l'inserimento dei dati richiesti, server SMTP, username (eventualmente con @dominio) e password. Gli slash servono a definire dei commenti, ovvero testo inerte che serve solo a far capire il codice ad un eventuale lettore. Puoi anche lasciarli, anzi .... io consiglio l'inserimento dei commenti ad ogni aggiunta o personalizzazione di codice. I dati dell'account SMTP vanno verificati attentamente e per farlo è sufficiente configurare un "outlook express" o un "thunderbird" con i medesimi dati per vedere se l'invio delle email funziona correttamente.

 

   $mail->AddAddress('destinatario@xxxxxxx.yyy', 'pinco pallino');
   $mail->SetFrom('name@yourdomain.com', 'nome cognome mittente');


Riferito al codice quì sopra:
Al posto della scritta che ho evidenziato in rosso, devo inserire il destinatario...sarebbe
sempre l'indirizzo mail che sto cercando di sistemare? E' lo stesso indirizzo mail per cui
prima ho fornito SMTP, username e password? Oppure è l'indirizzo mail del client
di posta elettronica con cui leggo le mail del mio sito?

Al posto di "pinco pallino" che ho evidenziato in verde, cosa devo scrivere?
E al posto della scritta che sopra ho evidenziato in giallo? Devo inserire il "form action"
del file che sto modificando? Se no, cosa? Infine, al posto del "nome cognome mittente"
che ho evidenziato in viola...come posso scrivere il nome del mittente se non so chi è il mittente?
Devo inserirci dei codici? Quali? Dove li trovo?

AddAddress serve ad inserire il destinatareio dell'email con i due campi classici indirizzo/descrizione (email/nomecognome) e rappresenta l'indirizzo a cui vuoi che il form venga inviato. Il campo descrizione può essere lasciato vuoto e quindi '' due apici singoli senza niente in mezzo.
 
SetFrom .... stessa cosa di sopra per l'indirizzo del mittente. Se nel tuo form hai inserito un "campo email" puoi usare il suo contenuto per fare in modo che l'email possa sembrare come inviata dal compilante piuttosto che un altro a piacere. Per usare il contenuto del "campo email" presente nel form, dovrai usare il contenuto di $_POST["Itm ... indicato anche nella sezione originale.

 

   $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
   $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
   $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!
 }


Riferito al codice sopra:
Ecco, caro serzio, quì mi perdo ancora peggio...
Nel codice sopra, dove devo scrivere qualche cosa?
Quali frasi o parole devo sostituire e con cosa?
Devo scrivere qualche codice dentro qualche parentesi o virgoletta?
Devo cancellare il doppio slash finale con le parole in inglese che seguono?
Potresti segnarmi (con IMMENSA pazienza) in rosso cosa devo scrivere
e dove e all'interno di quali virgolette o di quali parentesi
del codice sopra?

Lo so che mi prenderesti a bastonate...ma veramente, solo
così posso riuscire in quest'impresa.

GRAZIE!

Attendo!

Qui non sei stato attento .... l'avevo spiegato.  ;)

$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
Oggetto dell'email (titolo, subject). Ad es. "Email dal sito web"

$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
Puoi toglierla del tutto.

$mail->MsgHTML(...
E' il corpo vero e proprio dell'email, il contenuto con i dati.

echo "Message Sent OK</p>\n";
Per il momento puoi togliere l'echo, ma serve a gestire la pagina di cortesia ... puoi anche mettere al suo posto un
@header("Location: ../boh.html");
in cui redirigi su una pagina boh.html subito dopo l'invio con successo di una email.

Tutto il resto serve a gestire gli eventuali errori in due tipologie, quelli riconosciuti da PHPMailer e quelli non risonosciuti. Puoi lasciare invariato, per il momento.

DIMENTICAVO .... ogni modifica effettuata, svanisce con una esportazione del sito web. Pertanto è necessario fare attenzione alle modifiche e salvarle da qualche parte in locale per poi riapplicarle ad ogni esportazione. In realtà c'e' un trucchetto per evitare il problema ma è argomento di un reality diverso.  ;)

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #17 il: 08 Marzo, 2012, 19:55:46 »

Ciao serzio,
Hai ragione, scusami…
Dire “non va” significa tutto e nulla.
Allora…
Dopo aver apportato le modifiche che ti ho descritto, ora dopo
Aver compilato il form mail, non ricevo più “500 server error”
ma ricevo una pagina bianca, vuota, e nella barra degli indirizzi,
dove compare il dominio, mi appare questa scritta:
http://www.nome mio sito.com/files/mail_p075_8_03.php


Inoltre, riferito a questi codici:


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


tu mi hai scritto:
Con l'esportazione del sito quel pezzetto di codice viene generato direttamente da website, in base ai dettagli che hai inserito nel pannello "INVIO" dell'oggetto email, ed è sufficiente lasciarlo li dopo averlo reso inerte togliendo o commentando la riga che contiene la chiamata al metodo (funzione) send().


Ecco serzio…
Io non capisco, la mia stupidità in materia mi impedisce di comprendere bene che intendi con il fatto che quel pezzetto di codice venga generato direttamente da website. Devo vedere quale è il codice generato da website e copiarlo in quel pezzetto?
Se sì, dove trovo tale codice? Inoltre, che significa quando mi scrivi “togliendo o commentando la riga che contiene la chiamata al metodo (funzione) send()”??
Lo so che per te sono aspetti ovvi, ma io veramente ci ho passato 30 minuti, ho tentato qualche deduzione…ma nulla, non so dove mettere le mani.


Poi, se hai ancora grande pazienza con la mia stupidità, aggiungo:
Tu mi hai scritto:


AddAddress serve ad inserire il destinatareio dell'email con i due campi classici indirizzo/descrizione (email/nomecognome) e rappresenta l'indirizzo a cui vuoi che il form venga inviato. Il campo descrizione può essere lasciato vuoto e quindi '' due apici singoli senza niente in mezzo.
 
SetFrom .... stessa cosa di sopra per l'indirizzo del mittente. Se nel tuo form hai inserito un "campo email" puoi usare il suo contenuto per fare in modo che l'email possa sembrare come inviata dal compilante piuttosto che un altro a piacere. Per usare il contenuto del "campo email" presente nel form, dovrai usare il contenuto di $_POST["Itm ... indicato anche nella sezione originale.




Ecco serio…chi è il “destinatario dell’email”? Tu dirai che sono io! Sì, certo. Ma quindi che devo scrivere lì? Che si intende con “indirizzo/descrizione”?? Quale è il “campo descrizione”??
Nel mio form c’è un campo mail, come posso usare il suo contenuto? Ho provato a copiarci il contenuto di $_POST["Itm ...
Ed ho scritto quindi questo che segue:
$mail->SetFrom('$_POST["Itm_8_03_1]', '');


Va bene?


Per darti un idea di come è fatto il form mail che sto cercando di modificare,
puoi dare un occhiata al sito www.jadservice.it che è stato messo on-line da pochi giorni su un server temporaneo. Vedi la sezione contatti ed è praticamente quasi identica a quella che devo sistemare io.
Anche quel sito è fatto con website, ed infatti il form mail non è funzionante.
Ma in quel caso è il server che non supporta il PHP e va cambiato.


Infine, anche nel mio sito, dopo aver compilato il form mail, si viene indirizzati ad una pagina che avverte del successo di invio. Come posso fare che accada con il codice che mi hai dato?


Grazie di cuore!

stesil

  • Anziani
  • Utente storico
  • *
  • Post: 1219
    • quellidelcucuzzolo
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #18 il: 09 Marzo, 2012, 22:26:08 »
Scusate l'intrusione, ma leggendo i post mi è venuto un dubbio ...

Questo lo hai inserito?

Apri il file con un editor di testo, il notepad va più che bene anche se io uso il notepad++, ed inserisci nella riga immediatamente successiva all'include (sarà la seconda o trerza riga) quanto segue:

Codice:
Only registered users can see contents. Please click here to Register or Login.

Rispetto al resto:

Che si intende con “indirizzo/descrizione”?? Quale è il “campo descrizione”??

$mail->AddAddress('destinatario@xxxxxxx.yyy', 'pinco pallino');
la prima parte compresa tra gli apici è l'indirizzo mail del destinatario, la seconda la descrizione

 
Nel mio form c’è un campo mail, come posso usare il suo contenuto? Ho provato a copiarci il contenuto di $_POST["Itm ...
Ed ho scritto quindi questo che segue:
$mail->SetFrom('$_POST["Itm_8_03_1]', '');

Se hai ricavato Itm_8_03_1 dal campo del form, dovrebbe essere corretto.

Infine, anche nel mio sito, dopo aver compilato il form mail, si viene indirizzati ad una pagina che avverte del successo di invio. Come posso fare che accada con il codice che mi hai dato?

echo "Message Sent OK</p>\n";
Per il momento puoi togliere l'echo, ma serve a gestire la pagina di cortesia ... puoi anche mettere al suo posto un
@header("Location: ../boh.html");
in cui redirigi su una pagina boh.html subito dopo l'invio con successo di una email.

sostituisci a boh.html il nome della tua pagina.


@serzio: se ho scritto cavolate per favore correggi.

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #19 il: 09 Marzo, 2012, 23:06:43 »
Scusate l'intrusione, ma leggendo i post mi è venuto un dubbio ...

Questo lo hai inserito?

Apri il file con un editor di testo, il notepad va più che bene anche se io uso il notepad++, ed inserisci nella riga immediatamente successiva all'include (sarà la seconda o trerza riga) quanto segue:

Codice:
Only registered users can see contents. Please click here to Register or Login.

Credo di si, ha parlato di pagina bianca, mentre avrebbe avuto un "Class not found". Credo, invece, che abbia solo pasticciato con gli apici e quindi trasformato gran parte del codice in una grande stringa.


...

Inoltre, riferito a questi codici:


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


tu mi hai scritto:
Con l'esportazione del sito quel pezzetto di codice viene generato direttamente da website, in base ai dettagli che hai inserito nel pannello "INVIO" dell'oggetto email, ed è sufficiente lasciarlo li dopo averlo reso inerte togliendo o commentando la riga che contiene la chiamata al metodo (funzione) send().


Ecco serzio…
Io non capisco, la mia stupidità in materia mi impedisce di comprendere bene che intendi con il fatto che quel pezzetto di codice venga generato direttamente da website. Devo vedere quale è il codice generato da website e copiarlo in quel pezzetto?
Se sì, dove trovo tale codice? Inoltre, che significa quando mi scrivi “togliendo o commentando la riga che contiene la chiamata al metodo (funzione) send()”??
Lo so che per te sono aspetti ovvi, ma io veramente ci ho passato 30 minuti, ho tentato qualche deduzione…ma nulla, non so dove mettere le mani.

Durante la realizzazione del sito web, dopo l'inserimento dell'oggetto "form email" ed il completamento dei vari pannelli, rimane l'operazione di esportazione su internet. Questa operazione ricrea tutti i files html, css, js e php che vanno materialmente trasferiti sul sito web.
Dopo aver effettuato l'esportazione, per poter attivare la personalizzazione di cui stiamo parlando, devi editare il file mailxxxxx esportato che così diventerà diverso da quello standard creato da website. E' evidente che alla successiva riesportazione, tale file verrà rigenerato exnovo e quindi andrà a sovrascrivere quello da te modificato.

...
Ecco serio…chi è il “destinatario dell’email”? Tu dirai che sono io! Sì, certo. Ma quindi che devo scrivere lì? Che si intende con “indirizzo/descrizione”?? Quale è il “campo descrizione”??

Il destinatario è colui che riceverà il form compilato dal visitatore del sito. Potresti essere tu oppure il tuo cliente a cui hai preparato il sito web. Ad esempio:

$mail->AddAddress('p.paperino@paperopoli.com', 'Paolino Paperino'); // email/descrizione

oppure

$mail->AddAddress('p.paperino@paperopoli.com', '');  // descrizione omessa

Nel mio form c’è un campo mail, come posso usare il suo contenuto? Ho provato a copiarci il contenuto di $_POST["Itm ...
Ed ho scritto quindi questo che segue:
$mail->SetFrom('$_POST["Itm_8_03_1]', '');


Va bene?

Quasi. Una stringa (frase) è sempre delimitata da "..." (una coppia di doppi apici) o '...' (una coppia di apici singoli), ma non puoi mischiarli "...' oppure '..."

Avresti dovuto usare:

$mail->SetFrom($_POST["Itm_8_03_1"], '');

Il campo email del tuo form si chiama Itm_8_03_1 e per trasmetterlo dal form al file in php si utilizza la funzione $_POST che accetta come parametro il nome del campo che contiene l'email ... quindi, in altre parole, $_POST["Itm_8_03_1"] preleva e rende disponibile il contenuto del campo Itm_8_03_1 (che sarà l'indirizzo email inserito dal visitatore che compila il form) , mentre il SetFrom() prende due argomenti che sono rispettivamente email e descrizione con una sintassi identica all' AddAddress() e li inserisce in una apposita area dell'oggetto $mail.

...
Infine, anche nel mio sito, dopo aver compilato il form mail, si viene indirizzati ad una pagina che avverte del successo di invio. Come posso fare che accada con il codice che mi hai dato?


Grazie di cuore!



Questo lo lasciamo alla prossima puntata.  ;) Come avrai capito, non c'e' alcun problema a spiegare passo-passo le operazioni, ma a patto di non fornire la pappa pronta e facendo in modo che si capisca quello che si fa.

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #20 il: 10 Marzo, 2012, 08:36:02 »
Ciao serzio, Ciao stesil


in effetti...ho controllato ed avevo PASTICCIATO
come un tonto con gli apici e le virgolette.
Ho sistemato, almeno credo, ho ricaricato il file ma...nulla.
Ora mi da nuovamente l'errore che mi dava in origine,
quando non avevo apportato nessuna modifica,
il seguente errore:  :(



Server Error

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.


---------------------------------


Mentre cerco di trovare gli errori e di capire che cosa
ho sbagliato, ti incollo di seguito l'intero file che si trova
nel form mail_p075_8_03.php:



<?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: " . $_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
 $txtMsg = "";
 $htmMsg = $htmHead . "<tr><td></td></tr>" . $htmFoot;
 $oEmail = new imEMail("mail sito","mail sito","dal sito web","iso-8859-1");
 $oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
 
 $mail = new PHPMailer(true);
 $mail->IsSMTP(); // telling the class to use SMTP
 
 try {
   $mail->Host       = "XXXXXXXXXXX"; // SMTP server
   $mail->SMTPAuth   = true;
   $mail->Port       = 25;
   $mail->Username   = "XXXXXXXXXXX"; // SMTP account username
   $mail->Password   = "XXXXX";        // SMTP account password
   $mail->AddAddress('XXXXXXXXX','');
   $mail->SetFrom($_POST["Itm_8_03_1"],'XXXXXXX');
   $mail->Subject = 'PHPMailer Test Subject via mail(XXXXXXXX), 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 di XXXXXXXXX.com\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 di XXXXXXXXXXX.com<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("xxxxxxxxxx@xxxxx.xxx ",$_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();
@header("Location: ../faq.html");
?>




Ecco serzio, mi pare che ora gli apici e le parole inserite siano corrette,
Il file sopra è ESATTAMENTE quello che io ho inserito dentro il sito
nella cartella /files, nel file mail_p075_8_03.php
Ora rivedrò stringa dopo stringa e cercherò di capire dove ho sbagliato. ???

Grazie serzio, grazie stesil ! :)









serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #21 il: 10 Marzo, 2012, 15:10:20 »
Ciao serzio, Ciao stesil


in effetti...ho controllato ed avevo PASTICCIATO
come un tonto con gli apici e le virgolette.

 ;D sicuramente farai più attenzione in futuro alle virgolette ....

Ho sistemato, almeno credo, ho ricaricato il file ma...nulla.
Ora mi da nuovamente l'errore che mi dava in origine,
quando non avevo apportato nessuna modifica,
il seguente errore:  :(



Server Error

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.


Questo è un ottimo spunto per capire come fare per effettuare un semplice DEBUG (potremmo tradurlo con "diagnosi") sullo script che genera un errore ma non sappiamo dove e perchè. Ho una mezza idea su cosa potrebbe generare un simile problema che ha buone probabilità di trovarsi sulla penultima sezione, ma occorre essere metodici, altrimenti si rischia di perdere tempo inutilmente. Se avessimo accesso al file del log di sistema saremmo molto facilitati, ma purtroppo la maggior parte degli hosting economici non ci forniscono queste informazioni e quindi dobbiamo "industriarci" per nostro conto.
So perfettamente che per te è primario risolvere il problema e forse solo secondario capire il "come", ma purtroppo (si fa per dire) è importante anche capire come non essere dipendenti dagli altri e saper far da se. Anche se questa è una apparente perdita di tempo.

Il php è un linguaggio di scripting interpretato e strutturato, l'esecuzione delle istruzioni è sequenziale, ovvero dalla prima all'ultima salvo interruzioni intermedie dell'esecuzione a causa di errori o di exit() forzati. Il notro problema è che viene generato un errore, ma non sappiamo dove e soprattutto il fatto che sulla barra dell'indirizzo ci sia il nome del file dello script ci dice che inequivocabilmente l'errore viene generato all'interno del file e che l'esecuzione non termina correttamente.

Quindi il nostro obbiettivo è individuare il punto che ci manda la procedura in errore. Come? L'idea è semplice, facciamo una copia del file dello script per evitare di dover rifare il lavoro da capo ed inseriamo delle istruzioni in punti strategici che ci faranno capire a che punto si trova l'esecuzione via via che il webserver esegue i comandi fino ad arrivare all'errore. Naturalmente tali punti dovranno essere scelti ed in gergo tecnico si chiamano "break point" oppure "toggle breakpoint", giusto per capire la terminologia a grandi linee e con qualche necessaria approssimazione  ;) .
Il metodo che scegliamo per ricevere l'informazione sullo status corrente è quello di visualizzare una stringa a video e quindi tramite il comando echo.


---------------------------------


Mentre cerco di trovare gli errori e di capire che cosa
ho sbagliato, ti incollo di seguito l'intero file che si trova
nel form mail_p075_8_03.php:



<?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)");

Io comincerei a disattivare provvisoriamente il captcha inserendo una coppia // davanti ciascuna delle righe precedenti indicate in rosso, rendendo il codice inerte.

//Form Data$txtData = "";
$htmData = "";
...
// 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("mail sito","mail sito","dal sito web","iso-8859-1");
 $oEmail->setText($txtMsg . "\r\n\r\n" . $txtData);
 
...

//Send email to user
$txtMsg = "--- NON RISPONDETE A QUESTA E-MAIL ---\r\n\r\nHai inoltrato una richiesta alla sezione di XXXXXXXXX.com\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
...

@header("Location: ../faq.html");
?>

Tutto il codice che hai incollato è costituito sostanzialmente da 6 sezioni fondamentali e sono le seguenti:
//Check Captcha
//Form Data
// Template
//Send email to owner
//Send email to user
@header("Location: ../faq.html");

Se hai disattivato la prima, ne rimangono 5 e quindi aggiungiamo rispettivamente prima di ciascuna sezione, un echo

echo "//Form Data<br>";
echo "// Template<br>";
 echo "//Send email to owner<br>";
 echo "//Send email to user<br>";
 echo "header<br>"; exit();

E proviamo l'esecuzione. L'errore si ripresenterà, ma sicuramente avremo qualche indizio in più.

 

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #22 il: 11 Marzo, 2012, 08:33:56 »
Ciao serzio,


è veramente affascinante questo insieme di stringhe e codici,
e iniziare a capirci qualche MICROSCOPICA cosa è interessantissimo.
Ho inserito i codici che tu mi avevi indicato, gli "echo", ma il risultato
per ora è sempre identico:



Server Error

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.

Ho controllato più volte gli apici e le virgolette, anche i //,
ma non sortisce nessun effetto.
Mi sento inerme, perché vorrei contribuire a capire dove
è l'errore...ma non so da dove iniziare...
Ma non intendo scoraggiarmi!


A presto,
attendo tue valutazioni!


Grazie!




Ciao!  ;D

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #23 il: 11 Marzo, 2012, 09:45:53 »
Ciao serzio,


è veramente affascinante questo insieme di stringhe e codici,
e iniziare a capirci qualche MICROSCOPICA cosa è interessantissimo.

 :D L'unica cosa che mi dispiace è che ci siano pochissimi utenti su questo forum, disposti ad imparare anche a costo di "perderci" tempo. Ed andiamo già di lusso rispetto al fu-forum di incomedia. Peccato. Peccato perchè non è tempo perso, ma tempo guadagnato. Se ti avessi risolto il problema direttamente, ci avrei messo 5 minuti o forse 10 con la connessione lenta, ma tu non avresti imparato assolutamente nulla, mentre ora invece, piccoli interventi di manutenzione sul codice php puoi farli in autonomia guadagnando moltissimo tempo.  ;)

Ho inserito i codici che tu mi avevi indicato, gli "echo", ma il risultato
per ora è sempre identico:



Server Error

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.

...
E proviamo l'esecuzione. L'errore si ripresenterà, ma sicuramente avremo qualche indizio in più.

Non mi aspettavo che l'errore sparisse. Ma oltre l'errore, dovrebbero esserci dei messaggi a video generati dalle righe echo che ti ho fatto inserire. Sempre che tu le abbia inserite correttamente.

Ho controllato più volte gli apici e le virgolette, anche i //,
ma non sortisce nessun effetto.
Mi sento inerme, perché vorrei contribuire a capire dove
è l'errore...ma non so da dove iniziare...
Ma non intendo scoraggiarmi!

A presto,
attendo tue valutazioni!

Grazie!

Ciao!  ;D

Proviamo a fare così, allora, anche se il procedimento sarà più lungo. Se non riesci a vedere le righe nel browser, ti faccio inserire gli echo e fermare l'esecuzione.

Nella prima parte di codice, disattiviamo la verifica del captcha che ci darà solo problemi e perdita di tempo, per ora:

Codice:
Only registered users can see contents. Please click here to Register or Login.
Poi andiamo nella sezione successiva ed inseriamo quanto segue (ATTENZIONE, il codice da inserire è solo quello della riga con l'echo, il resto è quello che già è presente):

Codice:
Only registered users can see contents. Please click here to Register or Login.
Ci fermiamo qui e proviamo l'esecuzione che dovrebbe farci comparire semplicemente una riga nel browser con la scritta //Form Data e si dovrebbe fermare tutto (exit). Quindi, se non abbiamo errori, vuol dire che fino alla riga echo l'esecuzione è andata bene e dobbiamo proseguire con la sezione successiva. Tieni conto che fin'ora abbiamo controllato soltanto il captcha (disattivato e quindi niente) e l'inclusione dei due files imemail.inc.php e della classe phpmailer.

Quindi togliamo l' exit(); dalla sezione precedente e proseguiamo con la successiva sezione con:

Codice:
Only registered users can see contents. Please click here to Register or Login.
ed eseguiamo. Stesso discorso di sopra. Se non abbiamo errori, l'esecuzione ci visualizzerà sul video due righe, una per la corretta esecuzione fino all'inizio della sezione "Form Data" ed una per la corretta esecuzione fino alla sezione "Template" per poi interrompersi a causa dell'exit(). Fino a questo punto abbiamo eseguito correttamente l'inclusione dei due files e il prelievo delle informazioni inserite nel form.

E' chiaro il metodo usato? Se riesci ad estendere questo sistema anche alle altre sezioni, ti ritroverai in un punto in cui avrai l'errore e le righe visualizzate nel browser ti diranno quale sezione ha visualizzato il problema e quindi sarà sufficiente controllare la sola sezione incriminata.
E' chiaro che dobbiamo anche valutare che, in generale, un errore può essere generato in qualsiasi punto del codice ma manifestato in un punto diverso. Quindi il metodo che ti ho descritto serve ad individuare il "dove" viene manifestato il problema e le indagini si potrebbero estendere in punti diversi del codice ed alla ricerca del "chi" ha generato l'errore.
« Ultima modifica: 11 Marzo, 2012, 09:51:12 da serzio »

milux

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1779
    • 3MD
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #24 il: 11 Marzo, 2012, 10:48:36 »
Forse è bene confrontare il tutto  con lo script di Rubalo..  http://www.rubalo.it/kb/entry/60/
**OS : Windows 7 - 63Bit (uno è andato perso e non lo trovo..) + W10
**Website X5 :  Evo 10(active) - Evo 11(active) - 13(active)
**Wysiwyg Web Builder 12 (passa al lato oscuro..)
**Hosting : LINUX
**Editor : Notepad ++ / Geany

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #25 il: 11 Marzo, 2012, 10:52:39 »
Forse è bene confrontare il tutto  con lo script di Rubalo..  http://www.rubalo.it/kb/entry/60/


Si, anche, il problema potrebbe essere causato da qualche piccola variante al phpmailer che è abbastanza standard, ma che potrebbe essere stato lievemente modificato per funzionare su quei server .... non dimentichiamo che si tratta di server windows e quindi mi aspetto di tutto sul fronte compatibilità.
Con il metodo di diagnosi che ho spiegato, avremo anche questa conferma. Non ho consigliato subito questa verifica per stimolare la discussione.  >:D

milux

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1779
    • 3MD
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #26 il: 11 Marzo, 2012, 10:58:26 »
................ Non ho consigliato subito questa verifica per stimolare la discussione.  >:D


vado subito a darmi cinque frustate sulla schiena... :-[
**OS : Windows 7 - 63Bit (uno è andato perso e non lo trovo..) + W10
**Website X5 :  Evo 10(active) - Evo 11(active) - 13(active)
**Wysiwyg Web Builder 12 (passa al lato oscuro..)
**Hosting : LINUX
**Editor : Notepad ++ / Geany

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #27 il: 11 Marzo, 2012, 11:17:01 »
................ Non ho consigliato subito questa verifica per stimolare la discussione.  >:D


vado subito a darmi cinque frustate sulla schiena... :-[

No, non lo fare .... piuttosto .... comincia a ripassare il phpbb ....  ;)

milux

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1779
    • 3MD
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #28 il: 11 Marzo, 2012, 14:23:53 »
No, non lo fare .... piuttosto .... comincia a ripassare il phpbb ....  ;)


Ripassare..? me lo sogno pure di notte per fare le modifiche di giorno..  :))
**OS : Windows 7 - 63Bit (uno è andato perso e non lo trovo..) + W10
**Website X5 :  Evo 10(active) - Evo 11(active) - 13(active)
**Wysiwyg Web Builder 12 (passa al lato oscuro..)
**Hosting : LINUX
**Editor : Notepad ++ / Geany

pyskelletto

  • Nuovo arrivato
  • *
  • Post: 49
Re:Modulo Email con SMTP - websitex5 v8
« Risposta #29 il: 14 Marzo, 2012, 17:58:06 »
Eccomi!

Ciao serzio, ciao milux

Ho fatto tutte le prove che mi hai indicato serzio,


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


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

la terza prova ha dato questo risultato:
//Form Data
// Template
//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!

[/size][/font]
« Ultima modifica: 14 Marzo, 2012, 18:00:29 da pyskelletto »