Problema al enviar un archivo a mail

Tengo dos arvhivos form_mail.php y mail.php en el primero adjunto un archivo para enviarlo por mail y todo funciona bien. Pero
ahora quiero que se adjunte automaticamente en (form_mail.php)para poder resivirlo en mail.php
declare la ruta relativa en form_mail.php
$file="../home/salomos/archivo1.zip"
y en
<input type = file name = attachment value = <?echo $file?>>
pero no lo adjunta???
Desde ya Muchas Gracias
En la multitud de consejeros esta la victoria!!!

1 Respuesta

Respuesta
1
Primero disculpa por la tardanza. He tenido unos problemillas con un virus apestoso que me ha dejado el ordenador medio moribundo.
No entiendo bien lo que quieres hacer. En form_mail el usuario escoge un fichero para adjuntarlo a un mail y envia los resultados a un fichero llamado mail.php que es el que se encarga de enviar elcorreo, ¿no?
Si es asi, entonces, el script mail.php recibirá el fichero en las variables $_FILES['file']['tmp_name'] (contiene el nombre temporal que tiene el archivo enviado al servidor) y $_FILES['file']['name'] (contiene el nombre original del fichero sin la ruta). Par adjuntar definitivamente el fichero, tendrás que copiar el fichero temporal a un ruta que tu elijas y renombrarlo con el nombre original. Entonces podrás adjuntarlo en los headers del mail.
Si no es esto lo que querias preguntar, entonces necesito más datos y que me incluyas el código en cuestion que no te funciona.
Un saludo. Nos vemos
No lo que quiero es que ese archivo que se envia este en el Servidor no en el cliente.
Ej:
Que un usuario del Portal seleccione una Publicaion, Postal, etc y se la envie a laguien por correo.
Que las lagrimas de la pena y culpa que no te dejan ver el Sol,
No te impidan ver las estrellas...
Me he entretenido en buscarte una clase de php que hace eltrabajo de adjuntar ficheros. Es un poco larga pero funciona muy bien:
fichero: sendmail.class.php
<?
/**
* class: sendmail.class.php
* description: class for sending HTML mails with attachments
* created: 21.02.2003
* last change: 19.12.2003
* author: Günther Bauer <[email protected]>
* copyright: Günther Bauer
*/
class sendmail
{
// Variable deklarieren
var $emailheader = "";
var $textheader = "";
var $textboundary = "";
var $emailboundary = "";
var $charset = "";
var $betreff = "";
var $empfaenger = "";
var $attachment = array();
var $cc = array();
var $bcc = array();
// Konstruktor
function sendmail()
{
$this->textboundary = uniqid(time());
$this->emailboundary = uniqid(time());
$this->charset = "ISO-8859-1";
}
// Funktion zum setzen des CharSet´s
function SetCharSet($char)
{
$this->charset = $char;
}
// Funktion die überprüft ob die E-Mailadresse korrekt ist
function Validate_email($mailadresse)
{
if(!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})/i",$mailadresse))
{
die('Die E-Mailadresse '.$mailadresse.' ist nicht gültig!!!');
}
return $mailadresse;
}
// Von wem die Email kommt in den Header setzen
function from($name,$email)
{
$this->emailheader .= 'From: '.$name.'<'.$email.'>'."\r\n";
}
// Funktion um den Adressaten anzugeben
function to($to)
{
$this->empfaenger = $this->Validate_email($to);
}
// Funktion zum senden einer Kopie an Cc Empfänger
function cc($kopie_an_empfaenger)
{
$this->cc[] = $kopie_an_empfaenger;
}
// Funktion zum senden einer Kopie an Bcc Empfänger
function bcc($kopie_an_empfaenger)
{
$this->bcc[] = $kopie_an_empfaenger;
}
// Erstellt den Header der Mime-Mail
function makeMimeMail()
{
if(count($this->cc) > 0)
{
$this->emailheader .= 'Cc: ';
for($i=0;$i<count($this->cc);$i++)
{
if($i > 0) $this->emailheader .= ',';
$this->emailheader .= $this->Validate_email($this->cc[$i]);
}
$this->emailheader .= "\r\n";
}
if(count($this->bcc) > 0)
{
$this->emailheader .= 'Bcc: ';
for($j=0;$j<count($this->bcc);$j++)
{
if($j > 0) $this->emailheader .= ',';
$this->emailheader .= $this->Validate_email($this->bcc[$j]);
}
$this->emailheader .= "\r\n";
}
$this->emailheader .= 'MIME-Version: 1.0'."\r\n";
}
// Funktion für den Betreff anzugeben
function subject($subject)
{
$this->betreff = $subject;
}
// Textdaten in Email Header packen
function text($text)
{
$this->textheader .= 'Content-Type: multipart/alternative; boundary="'.$this->textboundary.'"'."\r\n\r\n";
$this->textheader .= '--'.$this->textboundary."\r\n";
$this->textheader .= 'Content-Type: text/plain; charset="'.$this->charset.'"'."\r\n";
$this->textheader .= 'Content-Transfer-Encoding: quoted-printable'."\r\n\r\n";
$this->textheader .= strip_tags($text)."\r\n\r\n";
$this->textheader .= '--'.$this->textboundary."\r\n";
$this->textheader .= 'Content-Type: text/html; charset="'.$this->charset.'"'."\r\n";
$this->textheader .= 'Content-Transfer-Encoding: quoted-printable'."\r\n\r\n";
$this->textheader .= '<html><body>'.$text.'</body></html>'."\r\n\r\n";
$this->textheader .= '--'.$this->textboundary.'--'."\r\n\r\n";
}
// Funktion zum anhängen für Attachments in der Email
function attachment($datei)
{
// Überprüfen ob File Existiert
if(is_file($datei))
{
// Header für Attachment erzeugen
$attachment_header = '--'.$this->emailboundary."\r\n" ;
$attachment_header .= 'Content-Type: application/octet-stream; name="'.basename($datei).'"'."\r\n";
$attachment_header .= 'Content-Transfer-Encoding: base64'."\r\n";
$attachment_header .= 'Content-Disposition: attachment; filename="'.basename($datei).'"'."\r\n\r\n";
// Daten der Datei einlesen, in das BASE64 Format formatieren und auf max 72 Zeichen pro Zeile
// aufteilen
$file['inhalt'] = fread(fopen($datei,"rb"),filesize($datei));
$file['inhalt'] = base64_encode($file['inhalt']);
$file['inhalt'] = chunk_split($file['inhalt'],72);
// Attachment mit Header in der Klassenvariable speichern
$this->attachment[] = $attachment_header.$file['inhalt']."\r\n";
}
else
{
die('Die Datei "'.$datei.'" existiert nicht...'."\r\n");
}
}
// Funktion zum erstellen des Kompletten Headers der Email
// Senden der Email
function send()
{
$this->makeMimeMail();
$header = $this->emailheader;
// Überprüfen ob Attachments angehängt wurden
if(count($this->attachment)>0)
{
$header .= 'Content-Type: multipart/mixed; boundary="'.$this->emailboundary.'"'."\r\n\r\n";
$header .= '--'.$this->emailboundary."\r\n";
$header .= $this->textheader;
if(count($this->attachment) > 0) $header .= implode("",$this->attachment);
$header .= '--'.$this->emailboundary.'--';
}
else
{
$header .= $this->textheader;
}
// Versenden der Mail
mail("$this->empfaenger",$this->betreff,"",$header);
$this->deletememory();
}
// Diese Funktion ist nur zum testen
function deletememory()
{
unset($this->emailheader);
unset($this->textheader);
unset($this->attachment);
}
}
?>
Y se usa así:
<?
include("sendmail.class.php");
$mail = new sendmail();
$mail->SetCharSet("ISO-8859-1");
$mail->from("Name","[email protected]");
$mail->to("[email protected]");
$mail->subject("Asunto");
$mail->text("El tesxto del mensaje con html");
$mail->attachment("adjunto1.zip");
$mail->attachment("pathtoadjunto2.zip");
$mail->send();
?>
Esta comentado en alemán, pero verás que el codigo no necesita mucha explicación.
Gracias perdona por no responder pero estoy terminado el proyecto y no tenia tiempo ni Internet
Muchas Gracias
Todo OK
El pasado no lo podemos cambiar;
pero el precente Si!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas