Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/12/2004, 07:05
Avatar de Miguel Delgado
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: