Foros del Web » Programando para Internet » PHP »

Clase Incontrable

Estas en el tema de Clase Incontrable en el foro de PHP en Foros del Web. Buscando sobre como enviar adjuntos por Php, me encontre con esta clase... solo en descripcion. mime_mail.class.php. Alguien la tiene o tiene documentacion... o algo que ...
  #1 (permalink)  
Antiguo 11/12/2004, 17:31
Avatar de Miguel Delgado  
Fecha de Ingreso: marzo-2004
Ubicación: Barranquilla
Mensajes: 130
Antigüedad: 20 años, 1 mes
Puntos: 0
Clase Incontrable

Buscando sobre como enviar adjuntos por Php, me encontre con esta clase... solo en descripcion. mime_mail.class.php.
Alguien la tiene o tiene documentacion... o algo que me diga ALGO.
Pues todo esta en frances.

Gracias...
__________________
Fox Mulder

El destino es el que baraja las cartas, pero nosotros somos los que jugamos. :pensando: :pensando:
  #2 (permalink)  
Antiguo 11/12/2004, 21:52
 
Fecha de Ingreso: enero-2004
Ubicación: Santiago
Mensajes: 127
Antigüedad: 20 años, 3 meses
Puntos: 0
Te recomiendo PHPMailer en su lugar (http://phpmailer.sourceforge.net), viene con ejemplos listos para usar, fuera de que esta toda la API documentada.
Entre otras cosas te permite:
- Enviar archivos adjuntos sacados del sistema de archivos
- Enviar archivos adjuntos sacados de un campo blob (base de datos)
- Puedes utilizar la funcion mail() de PHP, SMTP, Qmail, Sendmail.
- Autenticación SMTP.
- Mail con copia oculta (CCO)

Repasa un poco sus propiedades y métodos, te servirá bastante para lo que necesitas.

Saludos
  #3 (permalink)  
Antiguo 13/12/2004, 21:48
Avatar de Miguel Delgado  
Fecha de Ingreso: marzo-2004
Ubicación: Barranquilla
Mensajes: 130
Antigüedad: 20 años, 1 mes
Puntos: 0
Bueno he encontrado otra clase... y dejenme decirles.... que me he quedado con la Boca abierta.... pues funciona con la funcion mail nativa de Php
.... ASOMBROSO.....
Con decirles que se pueden enviar varios adjuntos... y la utilizacion no es tan complicada
En conclusion.. buenisima..
Quien la desee me puede contactar "mdelgado ARROBA globalmedsa.com"

La clase se llama "sendmail.class.php"
__________________
Fox Mulder

El destino es el que baraja las cartas, pero nosotros somos los que jugamos. :pensando: :pensando:

Última edición por Miguel Delgado; 13/12/2004 a las 22:02
  #4 (permalink)  
Antiguo 14/12/2004, 06:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Miguel Delgado

PHP Mailer tambien permite enviar vários archivos adjuntos y usa tres modos para enviar tu e-mail:

sendmail, mail() origianal de PHP o SMTP directo ... (ya te lo habían comentado)

No es que tenga nada que ver con los creadores de "PHP Mailer" (ni me dan comisión por recomendarla .. de hecho es "free" dicha classe). Pero, ... cuando quieras hacer otras cosas con e-mails como usar SMTP directo con "balanceo de carga" ... permite autentificación ... etc. tal vez no te sirva esa classe .. Bueno .. yo soy de la filosofía de tener una "cosa" que me resuelva un problema por completo .. en ese caso tema "mail" y uso en cada caso lo que corresponda, aprendo a usarla y le saco el máximo provecho hasta que encuentre otra mejor.

De todas formas .. si quieres compartir tu classe .. si tienes el link de donde lo sacastes mejor. En su defecto .. podrías colocar el código de la misma y un ejemplo de uso (no creo que sea muy largo el código?)

Un saludo,

Última edición por Cluster; 14/12/2004 a las 06:13
  #5 (permalink)  
Antiguo 14/12/2004, 07:05
Avatar de Miguel Delgado  
Fecha de Ingreso: marzo-2004
Ubicación: Barranquilla
Mensajes: 130
Antigüedad: 20 años, 1 mes
Puntos: 0
De acuerdo Clase para Mail

Gracias por tu sabia opinion Cluster y ademas tengo problemilla que me ha desilusionado, en Correos como Hotmail y Yahoo los adjuntos me llegan en Binario y la verdad no se q hacer.
Ya he comparado la rutina con las cabeceras normal, pero no se; de todos modos aqui va

---sendmail.class.php---
<?
/**
* class: sendmail.class.php
* description: class for sending HTML mails with attachments
* created: 21.02.2003
* last change: 26.01.2004
* author: Günther Bauer <[email protected]>
* modifications décembre 2003: Alain BOURDEAU <[email protected]>
* Pour l'utilisation sur la plateforme de la coopérative http://www.ouvaton.org. Les \r ont été éliminés et la blise MIME---- a été mise en tète du Header
* copyright: Günther Bauer
*/
class sendmail
{
// Variable deklarieren = declaration des variables
var $emailheader = "";
var $createur = ""; // ajout du 5em argument de l'e-mail
var $textheader = "";
var $textboundary = "";
var $emailboundary = "";
var $charset = "";
var $betreff = "";
var $empfaenger = array(); // transformation en array
var $attachment = array();
var $cc = array();
var $bcc = array();

// Konstruktor = construction des parametres fonctionnels
function sendmail()
{
$this->textboundary = uniqid(time());
$this->emailboundary = uniqid(time());
$this->charset = "ISO-8859-1";
}

// Funktion zum setzen des CharSet´s = la fonction de traduction des caractères
function SetCharSet($char)
{
$this->charset = $char;
}

// Von wem die Email kommt in den Header setzen = initialisation de l'émeteur
function from($name,$email)
{
$this->emailheader .= "From: ".$name."<".$email.">\n";
$this->createur = "-F $email";
}

// Funktion um den Adressaten anzugeben = la prise en compte des destinataires individuels (tranformé en tableau-array)
function to($to)
{
$this->empfaenger[] = $to;
}

// Funktion zum senden einer Kopie an Cc Empfänger = la prise en compte des destinataires Cc
function cc($kopie_an_empfaenger)
{
$this->cc[] = $kopie_an_empfaenger;
}

// Funktion zum senden einer Kopie an Bcc Empfänger = la prise en compte des destinataires Bcc
function bcc($kopie_an_empfaenger)
{
$this->bcc[] = $kopie_an_empfaenger;
}

// Erstellt den Header der Mime-Mail = intégration des destinataires Cc et-ou Bcc dans le Header 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->cc[$i];
}
$this->emailheader .= "\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->bcc[$j];
}
$this->emailheader .= "\n";
}
// la balise MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary a été mise dans le emailheader
$this->emailheader .= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n\tboundary=\"".$this->emailboundary."\"\r\n";
}

// Funktion für den Betreff anzugeben = prise en compte de l'objet du message
function subject($subject)
{
$this->betreff = $subject;
}

// Textdaten in Email Header packen = intégration du texte du message dans le Header et crétion du double en html
function text($text)
{
$this->textheader .= "Content-Type: multipart/alternative; \n\tboundary=\"".$this->textboundary."\"\n";
$this->textheader .= "--".$this->textboundary."\n";
$this->textheader .= "Content-Type: text/plain; charset=\"".$this->charset."\"\n";
$this->textheader .= "Content-Transfer-Enconding: quoted-printable\n";
$this->textheader .= strip_tags($text)."\n";
$this->textheader .= "--".$this->textboundary."\n";
$this->textheader .= "Content-Type: text/html; charset=\"".$this->charset."\"\n";
$this->textheader .= "Content-Transfer-Enconding: quoted-printable\n";
$this->textheader .= "\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
$this->textheader .= "\n<HTML><BODY>".str_replace("\r\n","<br>",$text). "</BODY></HTML>\n";
$this->textheader .= "--".$this->textboundary."--\n";
}

// Funktion zum anhängen für Attachments in der Email = prise en compte des fichiers attachés-joints au message
function attachment($datei)
{
// Überprüfen ob File Existiert = vérification de l'existence du fichier
if(is_file($datei))
{
// Header für Attachment erzeugen = création de l'entète de l'attachement
$attachment_header = "--".$this->emailboundary."\n" ;
$attachment_header .= "Content-Type: application/octet-stream;\n name=\"".$this->GetFileName($datei)."\"\n";
$attachment_header .= "Content-Transfer-Encoding: base64\n";
$attachment_header .= "Content-Disposition: attachment;\n filename=\"".$this->GetFileName($datei)."\"\n\n";

// Daten der Datei einlesen, in das BASE64 Format formatieren und auf max 72 Zeichen pro Zeile = transcodage BASE64 et formatage 72 caractères par ligne
// 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 = intégration de la mise en forme dans la variable idoine
$this->attachment[] = $attachment_header.$file['inhalt']."\n";
}
else
{
echo "Die Datei $datei existiert nicht...Ce document $datei n'existe pas\n";
}
}

// Funktion die den Dateinamen aus einer Angabe mit Pfad herausfiltert = traitement de l'adresse absolue du fichier
function GetFileName($PathWithFile)
{
if(preg_match("/\//i",$PathWithFile))
{
return substr(strrchr($PathWithFile,"/"),1);
}
else
{
return $PathWithFile;
}
}

// Funktion zum erstellen des Kompletten Headers der Email = mise en forme du Header des E-mail
// Senden der Email = expédition des e-mail
function send()
{
$this->makeMimeMail();

$header = $this->emailheader;

// Überprüfen ob Attachments angehängt wurden = ajout des différents attachements pris en compte
if(count($this->attachment)>0)
{
// $header .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->emailboundary."\"\n";
$header .= "--".$this->emailboundary."\n";
$header .= $this->textheader;

if(count($this->attachment) > 0) $header .= implode("",$this->attachment);

$header .= "--$this->emailboundary--";
}
else
{
$header .= $this->textheader;
}
// Versenden der Mail = mise en expédition individuelles des mails
if(count($this->empfaenger) >0)
{
foreach($this->empfaenger as $pour)
{
mail("$pour",$this->betreff,"",$header,"$this->createur");
echo "Versenden gemacht fur ".$pour."= envoi fait pour ".$pour."<br>";
}
}
else
{
mail("$this->empfaenger",$this->betreff,"",$header,"$this->createur");
echo "Versenden gemacht fur ".$this->empfaenger."= envoi fait pour ".$this->empfaenger;
}

$this->deletememory();
}

// Diese Funktion ist nur zum testen = C'est une fonction en test
function deletememory()
{
unset($this->emailheader);
unset($this->textheader);
unset($this->attachment);
}
}
?>
__________________
Fox Mulder

El destino es el que baraja las cartas, pero nosotros somos los que jugamos. :pensando: :pensando:
  #6 (permalink)  
Antiguo 14/12/2004, 07:06
Avatar de Miguel Delgado  
Fecha de Ingreso: marzo-2004
Ubicación: Barranquilla
Mensajes: 130
Antigüedad: 20 años, 1 mes
Puntos: 0
Ejemplo de SendMail

---SendmailExample.php---

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?
// Klasse einbinden = intégration de la classe
include("sendmail.class.php");

// Neue Instanz der Klasse erstellen (Ab jetzt kann auf die Funktionen der Klasse zugegriffen werden)
// création du nouveau lien ainsi les fonctions de la classe sont disponobles
$mail = new sendmail();

// Angeben des zu verwendenden CharSet´s = identification de la page de caractères
$mail->SetCharSet("ISO-8859-1");

// Angeben des Absenders und der Absenderemailadresse = le nom et l'adresse de l'expaditeur
$mail->from("Miguel Delgado","[email protected]");

// Angeben der Empfängeremailadresse = les adresses des destinataires la fonction a été transformée pour admettre plusieurs destinataires successifs du seul message
$mail->to("[email protected]");
$mail->to("[email protected]");

// Angeben des Cc Empfänger = les adresses des destinataires Cc.
$mail->cc("[email protected]");
//$mail->cc("[email protected]");

// Angeben dec Bcc Empfänger = les adresses des destinataires Bcc.
$mail->bcc("[email protected]");
//$mail->bcc("[email protected]");

// Angeben des Betreff´s = l'objet du message
$mail->subject("Prueba con Adjunto");

// Angeben des Textes (Auch HTML möglich) = le texte caracrères ascii puis en html pour faire bien
// Beim eingeben des HTML Textes bitte <HTML><BODY></BODY></HTML> weglassen, = le double du même texte sous forme HTML mais sans les balises.
// da dies automatisch hinzugefügt wird = les balises sont automatiquement mises en place dans la fonction
$mail->text("Este el Texto y deben ir cuatro imagenes");

// Anegeben eines Attachment´s (sind auch mehrere möglich) = les fichiers mis en pièces jointes ce qui est encore un plus
$mail->attachment("boo.gif");


// Versenden der E-Mail = la fonction qui expédie les mails
$mail->send();
?>


</body>
</html>


De todos quien me pueda ayudar.... para saber cual fue el problema les agradeceria.
__________________
Fox Mulder

El destino es el que baraja las cartas, pero nosotros somos los que jugamos. :pensando: :pensando:
  #7 (permalink)  
Antiguo 14/12/2004, 07:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías contactar al autor de dicha classe (por ahí aparece el e-mail) .. yo insisto y te puedo afirmar que PHP Mailer funciona perfectamente para todos esos casos. No está de más que la pruebes .. y ahí decidas tu mismo.

Al final practicamente usan las mismas cabeceras HTTP (del protocolo HTTP) y las mismas técnicas .. podrías comparar los métodos de ambas classes para el tema concreto del envio del e-mail "attachado".

Un saludo,
  #8 (permalink)  
Antiguo 14/12/2004, 10:08
Avatar de Miguel Delgado  
Fecha de Ingreso: marzo-2004
Ubicación: Barranquilla
Mensajes: 130
Antigüedad: 20 años, 1 mes
Puntos: 0
Ayuda

Tienes material ... de esa clase.. pues lo que mas duro me ha dado.. es lo del SMTP, pues mi servidor es remoto y mis app deben ser lo mas dependientes posibles del servidor.

He conseguido el KerioMailServer pero me he quedado igual.
__________________
Fox Mulder

El destino es el que baraja las cartas, pero nosotros somos los que jugamos. :pensando: :pensando:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:30.