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!!!
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 de Francisco Pérez
1
1

Francisco Pérez, Profesional de la enseñanza con experiencia en diseño web, bases...
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 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...
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.
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.
- Compartir respuesta
- Anónimo
ahora mismo
