![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Tech (http://www.dsy.it/forum/forumdisplay.php?forumid=189)
-- [help]Problema allegati con Phpmailer (http://www.dsy.it/forum/showthread.php?threadid=22151)
[help]Problema allegati con Phpmailer
Ho un problema ad aggiungere allegati con la classe Phpmailer, tramite un form contenuto in un sito.
la mail viene inviata correttamente ma al posto del file allegato che volevo inviare, c è un file temporaneo.
es : C:\PHP\uploadtemp\phpBD6.tmp
ovviamente non è sempre lo stesso, ogni volta che provo cambia il nome del file.
come posso risolvere questa cosa?
vi posto anche il codice
code:
<?php
if ($_REQUEST['Invia']) {
//aggiungo gli allegati
copy("$file","$file_name");
echo "allegato: ";
echo $file;
echo "<img src=\"".$file."\">";
include ("class.phpmailer.php");
//creazione istanza phpmailer
$mail = new phpmailer();
//seleziona il protocollo SMTP come modalità di spedizione
$mail->IsSMTP();
//nome dominio
$mail->Host = "smtp.miosito.it";
//segnala che è richiesta l autenticazione
$mail->SMTPAuth = TRUE;
//indicazione nome utente e password
$mail->Username = 'miamail@miosito.it';
$mail->Password = 'password';
//mittente
$mail->From = $_REQUEST['From'];
$mail->FromName = $_REQUEST['FromName'];
//$mail->From = "miamail@miosito.it";
//$mail->FromName = "preventivi stella";
//destinatario
//$mail->AddAddress($_REQUEST['TO'], $_REQUEST['ToName']);
$mail->AddAddress('miamail@miosito.it');
$mail->AddAttachment($file);
//oggetto e testo del messaggio
$mail->Subject = $_REQUEST['Subject'];
$mail->Body = $_REQUEST['Message'];
//formato testo o html
$mail->IsHTML = (boolean) $_REQUEST['FormatoHTML'];
if($mail->IsHTML) $mail->AltBody = strip_tags($_REQUEST['Message']);
if($mail->Send()) {
echo "<h2><p>Messaggio inviato con successo!</p></h2>";
} else {
echo "<p>Errore: ".$mail->ErrorInfo."</p>";
}
}
?>
<form method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Nome del mittente: </td>
<td><input type="text" name="FromName" size="40" value="<?= htmlspecialchars($_REQUEST['FromName']) ?>"></td>
</tr>
<tr>
<td>Email del mittente: </td>
<td><input type="text" name="From" size="40" value="<?= htmlspecialchars($_REQUEST['From']) ?>"></td>
</tr>
<tr>
<td>Oggetto: </td>
<td><input type="text" name="Subject" size="40" value="<?= htmlspecialchars($_REQUEST['Subject']) ?>"></td>
</tr>
<tr>
<td>Messaggio: </td>
<td><textarea name="Message" rows="7" cols="40"><?= htmlspecialchars($_REQUEST['Message']) ?></textarea></td>
</tr>
<tr>
<td>Pima foto: </td>
<td><input type="file" name="file" size="40"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Invia" value="Invia messaggio"></td>
</tr>
</table>
</form>
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
A vedere così, il problema sembra stare qui:
code:
//aggiungo gli allegati move_uploaded_file ($file, "$file_name") or die ("Impossibile uplodare il file sul server");
__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
scusa deep avevo sbagliato a copiare il codice esatto , ora ho corretto con:
code:
copy("$file","$file_name");
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
però copy non ti uploada il file.
Prova a dare un'occhiata qui: http://it.php.net/manual/it/features.file-upload.php
Ma sei sicuro che la classe che stai usando non preveda già qualche funzione per l'upload dei file?
Purtroppo non mi sono mai occupato mail con allegati in php 
__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
copy sono sicuro che uploada il file perchè se poi vado a guardare tramite ftp la cartella sul server il file che volevo uploadare c è, lo usavo anche in un altro script per upload su server.
per quanto ne so io la classe phpmailer non ha nessuna funzione per l upload.
Gli allegati funzionano tranquillamente con file già presenti sul server nella stessa cartella dov è contenuto il mio script, ma il problema sta proprio nell'effettuare prima l upload del file nella cartella e poi allegarlo.
sembra che anche se l upload avviene prima del comando AddAttachment, il file non sia stao ancora uploadato completamente, ed infatti mi allega un file tmp.
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
Originally posted by fulminato1
copy sono sicuro che uploada il file perchè se poi vado a guardare tramite ftp la cartella sul server il file che volevo uploadare c è, lo usavo anche in un altro script per upload su server..
Originally posted by php.net
Come da PHP 4.3.0, sia source che dest potrebbero essere URL se "fopen wrappers" è stato abilitato.
__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
già fatto e non cambia niente, sempre il solito problema.
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
mi correggo, il file che arriva allegato alla mail è segnato come .jpg (quindi corretto), ma quando poi scarico l allegato non me lo apre come immagine, ma lo vede come un file strano senza estensione es: 11233546.
alla fine il .jpg è dato dal passaggio come parametro $file_name alla AddAttachment.
il nome è corretto ma il file non è leggibile.
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
boh?
prova a postare la funzione AddAttachment()
__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
la funzione AddAttachment funziona perfettamente, l ho già provata con molti file già presenti sul server e aggiungendoli direttamente nel codice.
secondo me è tutta una questione di upload, lo script va avanti anche se effettivamente l upload non è stato terminato, oppure il file viene prima memorizzato in modo temporaneo prima della fine dello script e poi in modo definitivo.
ho fatto delle prove a mano e ho notato che file uploadati e che vengono tranquillamente visualizzati nelle pagine, se vado a cercarli tramite ftp appaiono solo dopo 4 o 5 refresh della cartella sul server.
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
mah guarda, potresti inserire qualcosa di questo tipo
while (!file_exists($file)) {
echo "";
} else AddAttachment($file);
in questo modo, finché il file non è effettivamente su server, dovrebbe rimanere nel ciclo facendo degli echo fittizzi. Una volta che il file esiste sul server, allora esce e passa all'AddAttachment.
In teoria ![]()
__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
infatti in teoria, lavevo già provato e non funziona.
cmq ho risolto il tutto dividendo in varie pagine.
ho una prima pagina con il form per l invio dei dati che richiama un altra pagina che effettua l upload e ne da conferma.quest ultima infine porta a quella finale con i campi della mail da compilare.
ho usato un input tipe hidden per passare la variabile dalla prima all ultima e così funziona benone, anche se non mi garba molto a livello di programmazione. cercherò di migliorarlo però l importante è che funzioni.
grazie mille dell aiuto Deep, era da tempo che ci sbattevo la tesat contro!
__________________
www.alterazione.com www.andreaforzani.com
www.myspace.com/alterazione
www.myspace.com/festaincravilla
| All times are GMT. The time now is 17:24. | Show all 12 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.