form con phpmailer

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
Ciao,
vorrei spedire una mail da form, come servizio host ho "ar**a", mi potete aiutare con i dati?

io ho come al solito la seguente form:
PHP:
<form action="webo.php" method="POST" enctype="multipart/form-data"> 
   <p>
   <label for="nome">Nome(*)</label>
   <input type="text" name="nome" id="nome" /></p>
   <p>
   <label for="prezzo">prezzo</label>
   <input type="text" name="prezzo" id="prezzo" />€</p>
   <p>
   <label for="ins_mail">eMail *</label>
   <input type="text" name="ins_mail"  value="[email protected]" id="ins_mail" /></p>
   <p>
   <label for="privacy">Dichiaro di aver letto <a href="privacy.php">l'informativa sulla privacy</a></label>
   <input type="checkbox" name="privacy" class="chk" value="privacy"/>  
   </p>
   <p>
    <input type="file" name="files[]" id="files" size="40" multiple/> 
    <input type="submit" name="invia"/> 
  </p>
  <p> (*) campo obbligatorio</p>
 </form>

e in webo.php la phpmailer seguente:
PHP:
<?php
require "php_mailer/class.phpmailer.php";

//istanziamo la classe
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host='smtp.aruba.it';

//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='[email protected]';
$messaggio->AddAddress('[email protected]');
$messaggio->AddReplyTo('[email protected]'); 
$messaggio->Subject='Prova di email';
$messaggio->Body=stripslashes('Ciao!!!!');

//definiamo i comportamenti in caso di invio corretto 
//o di errore
if(!$messaggio->Send()){ 
  echo $messaggio->ErrorInfo; 
}else{ 
  echo 'Email inviata correttamente!';
}

//chiudiamo la connessione
$messaggio->SmtpClose();
unset($messaggio);

?>

cosa devo settare ulteriormente? anche username e psw dell'accesso ad "Ar**a" ?
$messaggio->Username = "username";
$messaggio->Password = "password";
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
se metto 2 mail mie, come scritto:
[email protected] a [email protected] , la mail viene spedita.

con l'host ho la mail: " [email protected] "

non riesco a far andare se imposto la mail di partenza [email protected], nonostante queste impostazioni:
PHP:
..
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host='smtp.DOMINIO.it';
$messaggio->Username ="[email protected]"; //di solito la mail utilizzata
$messaggio->Password ='PSW'; //di solito la password della mail
$messaggio->SMTPAuth = true;
..

mi dice Email inviata correttamente, ma non la ricevo.Qualcuno può aiutarmi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto da che ne so aruba non accetta (o accettava) l'invio di email dal server via smtp, quindi dovresti togliere
$messaggio->IsSMTP();
$messaggio->Host='smtp.aruba.it';
e
$messaggio->SmtpClose();
poi cosa intendi con "aiutare con i dati"?
poi vuoi inviare in formato html e a chi deve essere inviata l'email? da quello che vedo non a te o sbaglio?
 
Ultima modifica:

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
intanto da che ne so aruba non accetta (o accettava) l'invio di email dal server via smtp, quindi dovresti togliere
$messaggio->IsSMTP();
$messaggio->Host='smtp.aruba.it';
e
$messaggio->SmtpClose();
poi cosa intendi con "aiutare con i dati"?
poi vuoi inviare in formato html e a chi deve essere inviata l'email? da quello che vedo non a te o sbaglio?

si la vorrei inviare in formato html, la mail va inviata a [email protected].
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se hai pazienza ti butto giu qualcosa.
però guarda che devi fare i soliti controlli dei dati inviati dal form.
sia sul testo che sui file allegati, corri il rischio che ti inviino 1000 file e qualcuno un bell exe.
intanto cerca nel forum in quanto, mi sembra, la'argomento è gia stato trettato
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
se hai pazienza ti butto giu qualcosa.
però guarda che devi fare i soliti controlli dei dati inviati dal form.
sia sul testo che sui file allegati, corri il rischio che ti inviino 1000 file e qualcuno un bell exe.
intanto cerca nel forum in quanto, mi sembra, la'argomento è gia stato trettato

Bhè i controlli li ho già, posso recuperare quelli, cambia soltanto che invece di inviarlo al database lo invia ad una mail. Giusto?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco alcune indicazioni
prova poi se non funzia posta quello che hai fatto
PHP:
<?php
//i vari controlli
require_once "phpmailler/class.phpmailer.php";//richiamo la classe
$messaggio = new PHPmailer();
//e la instanzio
$messaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta
$messaggio->IsHTML(true); // invio l'email in formato HTML
$messaggio->FromName= $nome;//il nome che ti risulta dal form
$messaggio->Subject="oggetto dell'email";//o quanto ti risulta dal form se fai scrivere l'oggetto
$messaggio->From=$email;//l'email che ti risulta dal form
$messaggio->AddAddress("[email protected]");//destinatario
$messaggio->AddReplyTo($email,"");//l'email che ti risulta dal form
$messaggio->Body=$invio_il_testo;//prima devi impostare il testo con i tag html che ti servono
$messaggio->AltBody="il client non è impostato per ricevere il formato html";//non so se ti serve
if($allegare !=""){//qui dovrai ciclare gli allegati se sono più di uno con il solito foreach
	$messaggio->AddAttachment($allegare);
}
//fine preparazione del corpo dell'email e allegato
//invio l'email
if(!$messaggio->Send()){ //errore di trasmissione
  	$messaggio_OK_KO="errore di trasmissione, riprova più tardi";
}else{ //invio avvenuto
	$messaggio_OK_KO="grazie di avermi contattato, ti sarà risposto quanto prima";
}//fine if-else invio
//e gli avvisi
//....
?>

p.s.
perchè non fai tutto su una pagina?
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
ecco alcune indicazioni
prova poi se non funzia posta quello che hai fatto
PHP:
<?php
//i vari controlli
require_once "phpmailler/class.phpmailer.php";//richiamo la classe
$messaggio = new PHPmailer();
//e la instanzio
$messaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta
$messaggio->IsHTML(true); // invio l'email in formato HTML
$messaggio->FromName= $nome;//il nome che ti risulta dal form
$messaggio->Subject="oggetto dell'email";//o quanto ti risulta dal form se fai scrivere l'oggetto
$messaggio->From=$email;//l'email che ti risulta dal form
$messaggio->AddAddress("[email protected]");//destinatario
$messaggio->AddReplyTo($email,"");//l'email che ti risulta dal form
$messaggio->Body=$invio_il_testo;//prima devi impostare il testo con i tag html che ti servono
$messaggio->AltBody="il client non è impostato per ricevere il formato html";//non so se ti serve
if($allegare !=""){//qui dovrai ciclare gli allegati se sono più di uno con il solito foreach
	$messaggio->AddAttachment($allegare);
}
//fine preparazione del corpo dell'email e allegato
//invio l'email
if(!$messaggio->Send()){ //errore di trasmissione
  	$messaggio_OK_KO="errore di trasmissione, riprova più tardi";
}else{ //invio avvenuto
	$messaggio_OK_KO="grazie di avermi contattato, ti sarà risposto quanto prima";
}//fine if-else invio
//e gli avvisi
//....
?>

p.s.
perchè non fai tutto su una pagina?

grazie, cmq prima di provare, funziona anche in locale? o solo in remoto?

il p.s. mi è piu comodo così, facendo delle prove questa non è la form originaria, quella originaria è piu grossa quindi molte piu righe di codice, praticamente mi va meglio così invece che scorrere centinaai di righe di codice =)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
così funziona solo in remoto sul tuo dominio.
per farla funzionare in locale devi aggiungere
PHP:
<?php
//....
//per inviare da locale SMTP*** INIZIO*************************************************************
$messaggio->IsSMTP();  // send via SMTP
$messaggio->Host     = "smtp.fastwebnet.it"; // SMTP servers: o alice o tim o quello che usi con (es.) outlook
$messaggio->SMTPAuth = true;     // turn on SMTP authentication
$messaggio->Username = "tuo_username";  // SMTP username
$messaggio->Password = "tua_passord"; // SMTP password
//per inviare da locale SMTP *** FINE***************************************************************
//...
?>
due cose:
1) guarda che il server SMTP è quello che usi dal tuo pc (non aruba) e così la password e l'username
2) verifica che nella cartella phpmailler esista il file class.smtp.php, che non devi richiamare perche ci pensa phpmailler a richiamerselo in automatico se trova le istruzioni di cui sopra

dimenticavo: quando carichi in remoto toglile o commentale
 
Ultima modifica:

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
così funziona solo in remoto sul tuo dominio.
per farla funzionare in locale devi aggiungere
PHP:
<?php
//....
//per inviare da locale SMTP*** INIZIO*************************************************************
$messaggio->IsSMTP();  // send via SMTP
$messaggio->Host     = "smtp.fastwebnet.it"; // SMTP servers: o alice o tim o quello che usi con (es.) outlook
$messaggio->SMTPAuth = true;     // turn on SMTP authentication
$messaggio->Username = "tuo_username";  // SMTP username
$messaggio->Password = "tua_passord"; // SMTP password
//per inviare da locale SMTP *** FINE***************************************************************
//...
?>
due cose:
1) guarda che il server SMTP è quello che usi dal tuo pc (non aruba) e così la password e l'username
2) verifica che nella cartella phpmailler esista il file class.smtp.php, che non devi richiamare perche ci pensa phpmailler a richiamerselo in automatico se trova le istruzioni di cui sopra

dimenticavo: quando carichi in remoto toglile o commentale

ok provato direttamente con le impostazioni di prima in remoto, la mail funziona, però ho tolto la parte allegato.

mi spieghi meglio proprio questa parte?
PHP:
$messaggio->AltBody="il client non è impostato per ricevere il formato html";//non so se ti serve 
if($allegare !=""){//qui dovrai ciclare gli allegati se sono più di uno con il solito foreach 
    $messaggio->AddAttachment($allegare); 
} 
//fine preparazione del corpo dell'email e allegato

dovrei dichiarare $allegare prima del IF, in che modo?

devo rimettere tutto questo controllo prima dell'IF?
PHP:
if ($err==""){
    $ammessi=array('jpg','gif','png','bmp'); 
    $size=2097152; 
    $dir="images/"; 
    //metto questi due per vedere meglio la query 
    //if($_FILES['files']['name'][0]==""){    // solo se obbligatorio foto
      //  echo "non hai selezionato alcun file<br />"; 
    //}else{//inizio i controlli 
        foreach($_FILES['files']['name'] as $ch => $nome_file){ 
            $est=strtolower(pathinfo($nome_file, PATHINFO_EXTENSION)); 
            if (!in_array($est, $ammessi)) {//verifica estenzione 
                //se non ammessi elimino 
                unset($_FILES['files']['name'][$ch],$_FILES['files']['type'][$ch], $_FILES['files']['tmp_name'][$ch],$_FILES['files']['error'][$ch],$_FILES['files']['size'][$ch]); 
            }else{ 
                //verifico che sia rimasto qualcosa 
                if(count($_FILES['files']['name'])>0){ 
                    if($_FILES['files']['size'][$ch] >$size){ 
                        //verifico la grandezza se maggiore elimino 
                        unset($_FILES['files']['name'][$ch],$_FILES['files']['type'][$ch], $_FILES['files']['tmp_name'][$ch],$_FILES['files']['error'][$ch],$_FILES['files']['size'][$ch]); 
                    }else{ 
                        //riverifico che sia rimasto ancora qualcosa 
                        if(count($_FILES['files']['name'])>0){ 
                            //sposto nella cartella 
                            if(move_uploaded_file($_FILES['files']['tmp_name'][$ch],$dir.$_FILES['files']['name'][$ch])){ 
                                //file caricato quindi prendo il nome del file per il db 
                                $per_db[]=$_FILES['files']['name'][$ch]; 
                            }//fine if spostamento 
                        }//fine controllo grandezza 
                    }//fine secndo if rimasri 
                }//fine primo if rimasri 
            }//fine if ammessi 
        }//fine del foreach controlli 
}// fine if iniziale
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto questo
PHP:
$messaggio->AltBody="il client non è impostato per ricevere il formato html";//non so se ti serve
si usa quando non si sa se il client di posta di chi riceve non è settato per ricevere le email in formato html, probabilmente il tuo si quindi inviando a te non ti dovrebbe servire.
è come per il db, soltanto che al posto dell'insert nel db fai l'invio dell'email.
aspetta poi che ti posto per gli allegati
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
intanto questo
PHP:
$messaggio->AltBody="il client non è impostato per ricevere il formato html";//non so se ti serve
si usa quando non si sa se il client di posta di chi riceve non è settato per ricevere le email in formato html, probabilmente il tuo si quindi inviando a te non ti dovrebbe servire.
è come per il db, soltanto che al posto dell'insert nel db fai l'invio dell'email.
aspetta poi che ti posto per gli allegati

Per ora va, aspettando il pezzo x gli allegati =)

cmq ti chiedo una cosa in remoto:
- se faccio 2 file, form.php e uno per il controllo della form, ad esempio action="upload.php" , mi va regolare
- invece se faccio tutto su un unico file , form.php e mettendo action='<?php echo $_SERVER['PHP_SELF'] ?>' , il browser (provato sia con firefox che con chrome) appena scrivo la pagina comincia a caricare e non si ferma più, quindi non potendo interagire
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
si puoi fare anche due pagine, ma se
invece se faccio tutto su un unico file , form.php e mettendo action='<?php echo $_SERVER['PHP_SELF'] ?>' , il browser (provato sia con firefox che con chrome) appena scrivo la pagina comincia a caricare e non si ferma più, quindi non potendo interagire
probabilmente sta sbagliando qualcosa, hai messo l'if isset subimit?
in giornata per il resto
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
QUOTE=borgo italia;141358]ciao
si puoi fare anche due pagine, ma se

probabilmente sta sbagliando qualcosa, hai messo l'if isset subimit?
in giornata per il resto[/QUOTE]
questo è
PHP:
<form id="form-login" action="controllo-login.php" method="post" enctype="multipart/form-data" >

<p class="p_psw">Effettua il login per inserire l'immobile</p> 

<p class="p_psw">Password<span class="gold"> *</span> 
<input class="psw_input" type="text" name="password"  />
<input id="button_login" type="submit"  value="login" name="login"/></p>
 
</form>
<?php
if(isset($_POST['login']) && $_POST['password'] == "xxxxxxxxx") { 
    echo include("si.php"); 
} else { 
	echo include("login.php"); 
}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'ultimo form che hai postato mi sembra che sia un form per il login, comunque schematicamente:
PHP:
<?php
if(isset($_POST['invia'])){
	//i controlli
	//poi se tttto ok
	//richiami phpmasiller
	//invii
	//e ritorni al form pulito
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
<!-- i vari campi di input..... -->
<input type="submit" name="invia"/> 
</form>
<?php
}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se anche nella parte php del form hai chiamato i file da allegare $per_db[] potresti fare cosi

PHP:
<?php
//.....
if(is_array($per_db[])){//qui dovrai ciclare gli allegati se sono più di uno con il solito foreach 
    $conta=0;
	foreach($per_db as $ch => $allegare){
		if($conta > 3){//ho messo 3 per inviare al massimo 4 allegati
			break;//interrompi il ciclo e vai alinvio
		}else{
			$messaggio->AddAttachment($allegare);
			$conta++;
		}
	}
} 
//...
?>
prova e sappimi dire
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
l'ultimo form che hai postato mi sembra che sia un form per il login, comunque schematicamente:
PHP:
<?php
if(isset($_POST['invia'])){
	//i controlli
	//poi se tttto ok
	//richiami phpmasiller
	//invii
	//e ritorni al form pulito
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
<!-- i vari campi di input..... -->
<input type="submit" name="invia"/> 
</form>
<?php
}
?>
non confondere, quella del phpmailer è un'altra questione.
Questa della form del login che mi carica all'infinito è un altra, ma non capisco cmq cosa cè di sbagliato.
 
Discussioni simili
Autore Titolo Forum Risposte Data
S passare un valore da un form a un file .php con metodo post PHP 4
I Form con selettore HTML e CSS 0
G form invio multiplo con checkbox PHP 12
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
G Invio form con PHP PHP 3
M Problema con controllo form in real time jQuery 6
M form con checkbox PHP 8
F query e form con select multipla PHP 17
W Rinominare Documenti Con Form Asp Classic ASP 9
S [PHP] Recupero nome immagine da Form con input file PHP 3
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
Domenico_Falco1 [Javascript] [HTML] Campi form con sfondo imposto dal browser Javascript 5
E Form inserimento dati con JavaScript Javascript 0
I [PHP] inviare form con allegato tramite una mail PHP 1
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
M [HTML] form con multipli input type image HTML e CSS 1
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
U [PHP] Form stessa pagina con qualche complicazione PHP 0
S [PHP] form con metodo get e recupero id PHP 4
michela90 [PHP] Refresh page on submit - Form con Swiftmailer PHP 14
Emix Problema con creazione form css/mobile HTML e CSS 3
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
L Scelta form con jquery jQuery 1
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
S Html con form e action .php PHP 6
bubino8 [PHP] Auto Submit form con dati PHP 7
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
T [Javascript] un form con select dinamica che funzioni da menù... Javascript 2
zammaeng [PHP] Problema form con lista PHP 8
B INSERIRE DATI CON IMMAGINE DA FORM IN MYSQL MySQL 7
V [PHP] Form con elenco a tendina con dati DB PHP 20
A [HTML] form con campi dinamici. HTML e CSS 1
asevenx [PHP] form con select che non invia dati se con apostrofo PHP 4
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
S [PHP] Form iscrizione senza DB con comandi deprecated PHP 10
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
G validazione form con div tipo alert jQuery 0
M form php con checkbox PHP 4
D form php con chapta PHP 1
I Form/aree di testo con input da lista di nomi!Chiedo aiuto!! HTML e CSS 3
P invio mail da form con dati php PHP 7
P PHP mailer invio form con 2 allegati. PHP 3
M Form multipagina con campi già compilati se presenti PHP 5
B problema con i form Javascript 0
F controllo form php con restituzione errori nella form PHP 10
A form con inserimento multiplo PHP 4
9 eliminare righe di una tabella con form html PHP 6

Discussioni simili