Mail in php da testo a html

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Il problema era lì. Ho corretto il controllo (poi l'ho rimosso)

Il fatto è che adesso mi da un fatal error


Fatal error: Uncaught exception 'phpmailerException' with message 'Message body empty' in /percorso/class.phpmailer.php:615 Stack trace: #0 /percorso/class.phpmailer.php(587): PHPMailer->PreSend() #1 /percorso/invio.php(72): PHPMailer->Send() #2 {main} thrown in /percorso/class.phpmailer.php on line 615

Il codice è questo:
PHP:
if ($_POST['Submit'] == 'Invia')
{

//registro l'ip di chi invia la mail su un file php

$file = "logip.php"; 
$open = fopen($file, "a+"); 
$testo = 'Ip mittente: '.$_SERVER['REMOTE_ADDR']. ' - Destinatario: '.$_POST['emaildichiriceve']. ' - Ora accesso: ' . date("G:i:s Y/m/d") . "<br />\r\n"; 
$write = fwrite ($open, $testo); 
fclose($open); 

// Recupero il valore dei campi del form  
   
$fromname = $_POST['nomedichiinvia'];  
$fromemail = $_POST['maildichiinvia'];  
$destinatario = "[email protected]";   
$oggetto = $_POST['oggetto'];   
$messaggio = $_POST['messaggio'];   
$verif_box = $_POST["verif_box"]; 


require_once 'class.phpmailer.php';  

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch  

//settiamo su true il metodo che indica alla classe 
//il formato HTML
$mail->IsHTML(true);

// ...controlla tutte le variabili che non devono essere vuote per inviare la mail, e poi settale nulle se inviata o fai un redirect 

//vista la situazione non credo ti serva un try catch per gestire le eccezioni 
  $mail->AddReplyTo($destinatario, 'Tuo sito');  
  $mail->AddAddress($fromemail, $fromname); 
  $mail->SetFrom($destinatario, 'Tuo sito');  
  $mail->Subject = $oggetto;  
  $mail->AltBody = 'Usa un editor mail compatibile con l\'html per vedere il messaggio!'; // optional - MsgHTML will create an alternate automatically  
  $mail->MsgHTML = $messaggio;  
  //$mail->AddAttachment($_FILES['input']['tmp_name'],$_FILES['input']['name']);  //Ti serve uno o piu allegati? 

// controllo se il codice di verifica è corretto
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){
	// se il codice di verifica è corretto invio il messaggio
	$mail->Send();
	// cancello il cookie in modo che non può essere inviato nuovamente aggiornando la pagina
	setcookie('tntcon','');
} else if(isset($message) and $message!=""){
	// se il codice di verifica non è corretto o provano ad accedere direttamente alla pagina php mostro l'errore.
} else {

	header('Location: ops.php');
	
	exit;
	}

	
} //fine dell'invio
 
Ultima modifica:

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Infatti sta li perchè nella condizione tu dici che se tutte quelle variabili non sono vuote fa un redirect sennò invia la mail, allora dovresti
invertirli cioè mettere i codici per l'invio della mail nella prima condizione e il redirect nell'else
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Il problema era lì. Ho corretto il controllo (poi l'ho rimosso)

Il fatto è che adesso mi da un fatal error


Fatal error: Uncaught exception 'phpmailerException' with message 'Message body empty' in /percorso/class.phpmailer.php:615 Stack trace: #0 /percorso/class.phpmailer.php(587): PHPMailer->PreSend() #1 /percorso/invio.php(72): PHPMailer->Send() #2 {main} thrown in /percorso/class.phpmailer.php on line 615

Il codice è questo:
PHP:
if ($_POST['Submit'] == 'Invia')
{

//registro l'ip di chi invia la mail su un file php

$file = "logip.php"; 
$open = fopen($file, "a+"); 
$testo = 'Ip mittente: '.$_SERVER['REMOTE_ADDR']. ' - Destinatario: '.$_POST['emaildichiriceve']. ' - Ora accesso: ' . date("G:i:s Y/m/d") . "<br />\r\n"; 
$write = fwrite ($open, $testo); 
fclose($open); 

// Recupero il valore dei campi del form  
   
$fromname = $_POST['nomedichiinvia'];  
$fromemail = $_POST['maildichiinvia'];  
$destinatario = "[email protected]";   
$oggetto = $_POST['oggetto'];   
$messaggio = $_POST['messaggio'];   
$verif_box = $_POST["verif_box"]; 


require_once 'class.phpmailer.php';  

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch  

//settiamo su true il metodo che indica alla classe 
//il formato HTML
$mail->IsHTML(true);

// ...controlla tutte le variabili che non devono essere vuote per inviare la mail, e poi settale nulle se inviata o fai un redirect 

//vista la situazione non credo ti serva un try catch per gestire le eccezioni 
  $mail->AddReplyTo($destinatario, 'Tuo sito');  
  $mail->AddAddress($fromemail, $fromname); 
  $mail->SetFrom($destinatario, 'Tuo sito');  
  $mail->Subject = $oggetto;  
  $mail->AltBody = 'Usa un editor mail compatibile con l\'html per vedere il messaggio!'; // optional - MsgHTML will create an alternate automatically  
  $mail->MsgHTML = $messaggio;  
  //$mail->AddAttachment($_FILES['input']['tmp_name'],$_FILES['input']['name']);  //Ti serve uno o piu allegati? 

// controllo se il codice di verifica è corretto
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){
	// se il codice di verifica è corretto invio il messaggio
	$mail->Send();
	// cancello il cookie in modo che non può essere inviato nuovamente aggiornando la pagina
	setcookie('tntcon','');
} else if(isset($message) and $message!=""){
	// se il codice di verifica non è corretto o provano ad accedere direttamente alla pagina php mostro l'errore.
} else {

	header('Location: ops.php');
	
	exit;
	}

	
} //fine dell'invio
PHP:
$mail->MsgHTML = $messaggio;

Sostituiscilo con
PHP:
$mail->MsgHTML($messaggio);

E' una funzione non una variabile
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
PHP:
$mail->MsgHTML = $messaggio;

Sostituiscilo con
PHP:
$mail->MsgHTML($messaggio);

E' una funzione non una variabile

Ok sono un pirla :p

Comunque così la mail è stata spedita... Tuttavia (in spam) è arrivato questo messaggio

This is the mail system at host postlady.000webhost.com.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<[email protected]>: host mailer2.io[193.223.78.141] said: 550 5.1.1 <[email protected]>...
User unknown (in reply to RCPT TO command)

[email protected] è l'email di prova che ho inserito io, alla quale avrei dovuto rispondere...... Con questa mail mi è giunto un allegato che conteneva questo

HTML:
Return-Path: <[email protected]>
Received: by postlady.000webhost.com ([000webhost.com Mail Server], from userid 99)
	id E64E2AA1A9; Tue,  3 Jul 2012 07:03:40 -0400 (EDT)
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on
	postlady.000webhost.com
X-Spam-Level: ****
X-Spam-Status: No, score=4.9 required=7.0 tests=FREEMAIL_FROM,HTML_MESSAGE,
	HTML_SHORT_CENTER,LOCALPART_IN_SUBJECT,MPART_ALT_DIFF,TVD_RCVD_SPACE_BRACKET
	autolearn=disabled version=3.3.2
Received: from srv45.000webhost.com (srv45.000webhost.com [31.170.160.109])
	by postlady.000webhost.com ([000webhost.com Mail Server]) with ESMTP id 7C906AA108
	for <[email protected]>; Tue,  3 Jul 2012 07:03:40 -0400 (EDT)
Received: by srv45.000webhost.com (Postfix, from userid 2089413)
	id 6126516F660; Tue,  3 Jul 2012 07:03:40 -0400 (EDT)
To: ad <[email protected]>
Subject: asd
X-PHP-Script: sito.com/percorso/invio.php for 151.77.181.194
Date: Tue, 3 Jul 2012 07:03:40 -0400
From: Tuo sito <[email protected]>
Reply-To: Tuo sito <[email protected]>
Message-ID: <[email protected]>
X-Priority: 3
X-Mailer: PHPMailer 5.2.1 (http://code.google.com/a/apache-extras.org/p/phpmailer/)
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="b1_2e653b3df16042309e984f40e260c002"

--b1_2e653b3df16042309e984f40e260c002
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Usa un editor mail compatibile con l'html per vedere il messaggio!


--b1_2e653b3df16042309e984f40e260c002
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

<center>asd</center>



--b1_2e653b3df16042309e984f40e260c002--

Ma che è???
Vedi l'allegato 1289
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
La mail è arrivata correttamente? Forse c'è un qualche errore nel header(strano), hai provato a rispondere all'e-mail?
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
La mail è arrivata correttamente? Forse c'è un qualche errore nel header(strano), hai provato a rispondere all'e-mail?

Guarda l'immagine che ti ho allegato, la mail non mi arriva proprio. Mi arriva un messaggio d'errore dell'host.

Non è che il problema sta nell'allegato?

Nel form c'è il campo per l'allegato ma nel php non ho messo nulla, nemmeno un richiamo non è che inviando l'allegato vuoto e non gestendolo nel php si genera quell'errore?

Nel form ho inserito l'allegato così

<!-- inserisco l'allegato della mail -->
<label>Allega file</label><input type="file" name="allegato" id="allegato" size="32" />

Ma nel php non ho alcun riferimento
 
Ultima modifica:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Hai provato senza allegato? Il file allegato esiste?

Ho rimosso l'allegato e tutto funziona a dovere... :\ mi ero dimenticato uno strascico del vecchio codice nel php. :p

Ma adesso sorge spontaneo.... come gestisco l'allegato?

Il php ora è pulito c'è solo da inserirlo.

Se il form è questo:

HTML:
                        <!-- inserisco l'allegato della mail -->		
			<label>Allega file</label><input type="file" name="allegato" id="allegato" size="32" />

Il php dovrò modificarlo così?

PHP:
  $mail->AltBody = 'Usa un editor mail compatibile con l\'html per vedere il messaggio!'; // optional  
  $mail->MsgHTML($messaggio);    
  $mail->AddAttachment($_POST['allegato']); //codice aggiunto pr l'allegato

E se ne voglio più d'uno?

Il codice da te postato prima era questo

PHP:
for($i=1;$i<=3;$i++) if(!empty($_POST['allegato'.$i]))$mail->AddAttachment($_POST['allegato'.$i]);

Mi spieghi il funzionamento?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Il codice che ho postato prima era un esempio, in questo caso dovresti uppare il file ($_FILES['allegato']) e copiare il path
di esso per poi metterlo nella funzione AddAttachment() del phpmailer
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Il codice che ho postato prima era un esempio, in questo caso dovresti uppare il file ($_FILES['allegato']) e copiare il path
di esso per poi metterlo nella funzione AddAttachment() del phpmailer

Ho risolto così

PHP:
$mail->AddAttachment($_FILES['allegato']['tmp_name'],$_FILES['allegato']['name']); // Valorizzo le variabili relative all'allegato

Se volessi mettere più allegati? Come risolvo?
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Ho risolto così

PHP:
$mail->AddAttachment($_FILES['allegato']['tmp_name'],$_FILES['allegato']['name']); // Valorizzo le variabili relative all'allegato

Se volessi mettere più allegati? Come risolvo?

Inoltre quando invio un'immagine nel messaggio non la invia ma mi appare una mail bianca, come mai?
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Per mettere piu allegati aggiungi degli attachment

Ti ringrazio, :) avevo risolto. A volte impazzisco posto e poi risolvo un momento dopo :faraone:

per l'immagine forse metti il path locale e per questo è bianca (nel body)

Mh... cioè? Il problema dell'immagine bianca non sussiste con l'allegato ma con la mail. Cioè se nella textarea scrivo
Codice:
<center>manu</center>
allora mi arriva una mail con il testo centrato.

Ma se ad es scrivo

HTML:
<html>
<body>

<img src="http://www.w3schools.com/tags/smiley.gif" alt="Smiley face" width="42" height="42"> ciao

</body>
</html>

L'immagine non arriva ed esce scritto solo ciao, a volte manco quello.
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Ecco l'errore che si presenta quando provo a inserire una faccina nel messaggio......

Fatal error: Uncaught exception 'phpmailerException' with message 'Could not access file: ' in /percorso/class.phpmailer.php:1513 Stack trace: #0 /percorso/invio.php(64): PHPMailer->AddAttachment(NULL, NULL) #1 {main} thrown in /percorso/class.phpmailer.php on line 1513

:/
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Ecco l'errore che si presenta quando provo a inserire una faccina nel messaggio......

Fatal error: Uncaught exception 'phpmailerException' with message 'Could not access file: ' in /percorso/class.phpmailer.php:1513 Stack trace: #0 /percorso/invio.php(64): PHPMailer->AddAttachment(NULL, NULL) #1 {main} thrown in /percorso/class.phpmailer.php on line 1513

:/

Scusa non una faccina ma un allegato. Non lo fa sempre è questo il bello.... lo fa solo a volte......
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Riepilogo un momento.

I problemi sono due:

1. L'allegato: vorrei far si che l'allegato non sia un campo obbligatorio. Se invio la mail con l'allegato spedisce senza problemi. Se invece non lo inserisco esce questo:
HTML:
Fatal error: Uncaught exception 'phpmailerException' with message 'Could not access file: ' in /percorso/class.phpmailer.php:1513 Stack trace: #0 /percorso/invio.php(64): PHPMailer->AddAttachment(NULL, NULL) #1 {main} thrown in /percorso/class.phpmailer.php on line 1513

2. L'html della mail: prende solo la formattazione del testo (manco il colore) e non fa visualizzare il resto dell'html

Non riesco a risolvere......
 
Ultima modifica:

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Riepilogo un momento.

I problemi sono due:

1. L'allegato: vorrei far si che l'allegato non sia un campo obbligatorio. Se invio la mail con l'allegato spedisce senza problemi. Se invece non lo inserisco esce questo:
HTML:
Fatal error: Uncaught exception 'phpmailerException' with message 'Could not access file: ' in /percorso/class.phpmailer.php:1513 Stack trace: #0 /percorso/invio.php(64): PHPMailer->AddAttachment(NULL, NULL) #1 {main} thrown in /percorso/class.phpmailer.php on line 1513

Risolto il problema dell'allegato, PARE e ripeto PARE che non dia più tale errore se al posto di
PHP:
$mail = new PHPMailer(true);
lo richiamo così
PHP:
$mail = new PHPMailer();

Rimane come problema:

2. L'html della mail: prende solo la formattazione del testo (manco il colore) e non fa visualizzare il resto dell'html

Non riesco a risolvere......
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Potrebbe essere dovuto all'editor e-mail che viene usato, hai provato con altri provider e-mail che offrono editor diversi?
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Potrebbe essere dovuto all'editor e-mail che viene usato, hai provato con altri provider e-mail che offrono editor diversi?

Ogni volta che posti tu, io risolvo XD

Adesso adesso ho visto qual'era il problema.

Il problema erano i magic quote, ho fatto in questo modo

PHP:
$msg = stripslashes($messaggio);
$mail->MsgHTML($msg);

E tutto vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......come deve andareeeeeee..... o per lo meno cosi dicònoooooo...... xD
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ogni volta che posti tu, io risolvo XD

Adesso adesso ho visto qual'era il problema.

Il problema erano i magic quote, ho fatto in questo modo

PHP:
$msg = stripslashes($messaggio);
$mail->MsgHTML($msg);

E tutto vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......come deve andareeeeeee..... o per lo meno cosi dicònoooooo...... xD
Meglio cosi, almeno hai piu soddisfazione poi :vampiro:
 
Discussioni simili
Autore Titolo Forum Risposte Data
Cosina Andare a capo nel testo della mail ricevuta dal form php PHP 1
R Confrontare il dominio di una mail con una stringa contenente un dominio personalizzato, tutto ciò in php o javascript PHP 0
U PHP bottone per invio mail o ritorno al form PHP 15
G Invio mail con php da dati prelevati da un database PHP 9
AC1 [PHP] Invio Mail PHP 18
L Problema funzione mail() PHP PHP 3
I [PHP] inviare form con allegato tramite una mail PHP 1
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
L PopUp tramite PHP se la mail inserita è già registrata nel database PHP 3
G [PHP] Creare mail con allegato nascosto e bottone di richiamo PHP 0
P [PHP] PEAR Mail e Query PHP 3
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
M [PHP] mandare mail usando i cantatti di una lista su mailchimp PHP 7
G [PHP] Creare appuntamento ed inviarlo tramite mail (Outlook e Gmail) PHP 0
A [PHP] Problema invio mail con funzione mail() PHP 3
A Php mail non invia due mail di seguito PHP 3
A [PHP] Inviare mail con piu immagini allegate PHP 6
A [PHP] Modulo mail PHP 3
A [PHP] Formattazione Mail HTML HTML e CSS 5
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
paloppa [PHP] Invio mail da form dubbio PHP 17
B [PHP] Mail di Avvenuta registrazione PHP 4
M [PHP] Componi i file di Excel in e-mail PHP 1
F Form mail php errore invio PHP 5
Punix [PHP] problema script invio e-mail PHP 2
cobra_72 [PHP] problema invio multiplo allegati mail PHP 21
E [PHP] mail inviata anche con campi obbligatori non compilati PHP 9
Z Limite invio newsletter con PHP - mail() PHP 4
F [PHP] Comando mail() e lettere accentate PHP 10
N PHP, mail e outlook PHP 4
Tony Recchia [PHP] Modulo mail HTML PHP 4
allegria [PHP] Ricevo una doppia mail dal form PHP 6
C Sendmail PHP invia mail vuote PHP 14
E Rimuovere "dati in memoria" dopo invio mail [PHP] PHP 18
A [PHP] Blocco mail spam con regex PHP 2
A Non riesco ad inviare una mail attraverso PHP su Xampp PHP 2
V mail php PHP 10
ecosito [PHP] Attivare il form mail di un template PHP 2
utente Form mail php - indirizzo ip PHP 9
F Invio automatico mail php PHP 0
Francesco Polese Errore form invio mail+php PHP 22
R Errore invio mail in php PHP 1
V Spedire mail con PHP: come conosco i dati? PHP 8
felino Joomla 3.x - Configurazione PHP Mail Joomla 0
M Errore invio mail da php Posta Elettronica 5
P invio mail da form con dati php PHP 7
webmachine Come programmare l'invio di una mail in PHP? PHP 1
M Inviare mail con PHP tramite Mozilla PHP 3
M configurazione invio mail php PHP 25
G Piccolo aiuto per php mail PHP 2

Discussioni simili