SALWA
Février 24, 2005, 11:13
1
bonjour
votre aide sera la bien venue
j’ai crée un formulaire qui permet de saisir des info
dans ce formulaire on peut insere des pieces jointes
j’ai réussi a envoyer des mail avec en pieces jointes des images,… dont les formats sont jpg, jpeg,…
j’utilise une classe “mime_mail” constituer d’une serie de fonction
$mail= new mime_mail;
if(!empty($file_size1))
{
if ($fichier1_size!=0)
{
if (good_format($fichier1_name))
{
$image=fopen(($fichier1),“r”);
$img_file=fread($image,filesize($fichier1));
$mail->attach_photo_file($img_file,$fichier1_name);
fclose($image);
}
}
}
"good_format est une fonction que j’ai crée et qui n’est pas dans la classe "
function good_format($picture)
{
switch (substr($picture,strpos($picture,"."),strlen($picture)-1))
{
case “.JPEG”:
case “.JPG”:
case “.GIF”:
case “.jpg”:
case “.gif”:
case “.jpeg”:
return true;
break;
default:
return false;
break;
}
}
le probleme c’est que quand je veux envoyer un fichier autre qu’une image le fichier est envoyer mais on ne recoonait pas le format
je n’arrive pas a comprendre et ca m’enerve je vous met a la suite la fonction de la classe correspondant a attach_file
function attach_file (
$file_path
) {
$F = fopen($file_path, “r”) or die( "
Warning : ".
“Can’t attach $file_path to mail !”
);
$file_content = fread( $F, filesize($file_path) );
fclose( $F );
if ( strstr( $file_path, “/” ) ) {
ereg( “/(.[^/]+$)”, $file_path, $match );
$file_name = $match[1];
} else {
$file_name = $file_path;
}
$this->parts[] = array (
“message” => $file_content,
“ctype” => “application/octet-stream”,
“name” => $file_name
);
}
j’espère que dans ce forum il y aura de l’aide
merci
peux-tu mettre ton titre en minuscule stp ? :jap:
SALWA
Février 24, 2005, 11:18
3
pourquoi ca pose un probleme???
c’est une question
SALWA
Février 24, 2005, 11:19
4
si tu veux m’aider ton aide est a bien venue et si c’est pour me faire chier desolé mais j’ai d’autres choses a faire
heu, juste comme ça au passage, jeanguy et moi sommes moderateurs sur ce forum, donc c’est juste un petit conseil :
:jap:
SALWA
Février 24, 2005, 11:26
6
excuse moi mais ce n’est pas le premier forum que je visite et il y a des personnes qui se sont mis m’envoyer des reponses croyant que c’estait un forum de discussion voire de rencontre
encore une fois desolé
edit ton topic et met le titre en minuscule svp :jap:
Le truc que tu viens de poster ici
Qu’entends-tu par “on ne reconnait pas le format”?
application/octet-stream
SALWA
Février 24, 2005, 11:57
11
lors de l’envoi de l’email je recois le message avec un fichier joint mais lorsque je veux l’ouvrir un fenetre apparait disant aucun programme n’est associé au fichier c:/…pour cette opération
de plus le nom du fichier se nomme dans la reception du mail: php8rcg30 alors que ce n’est pas le nom a l’origine
merci pour l’aide
Ben voilà…
application/octet-stream = extension mime pour désigner tout et n’importe quoi
Pas d’extension pour devinier le type du fichier, comment le client mail pourrait-il s’en sortir (Je ne crois pas qu’il y en ait beaucoup qui testent l’entête binaire)
-> Une solution, rétablir la bonne extension
Juste comme ça pour les images, c’est getimagesize qu’il faut utiliser. Pas se baser sur l’extension
SALWA
Février 24, 2005, 2:46
14
ok merci pour l’info mais tel que je l’ai fait ca marche bien
le probléme c’est que j’arrive pas envoyer des fichier autre que des images
perso j’utilise la classe sendmail qui fonctionne tres bien
si cela peut t’aider :bounce:
la classe :
[cpp]
<?
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;$icc);$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;$jbcc);$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 .= ''.$text.''."\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(' Le fichier "'.$datei.'" n existe pas'."\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);
}
}
?>
[/cpp]
et pour l’utilisation :
[cpp]$mail = new sendmail();
$mail->SetCharSet(“ISO-8859-1”);
$mail->from(“Service client","client@toto.com ”); //exemple
$mail->to(“adresse email”);
$mail->cc(“adresse email”);
$mail->subject(“sujet du mail”);
$mail->text(“texte du mail”);
$mail->attachment(“test.pdf”);
$mail->send();[/cpp]
SALWA
Février 24, 2005, 4:33
16
je ne peux pas changer la classe que j’utilise car elle comporte plusieur fonction que j’utilise
merci comme meme
SALWA
Février 24, 2005, 4:34
17
j’ai essayé de remplacer la fonction attachement a la place de celle sue j’utilise mais ca marche non plus
SALWA
Février 24, 2005, 5:33
18
qui peux m’aider je dois avoir tout boucler pour demain soir alors 'il vous plait