php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.05.2009, 09:49  
Neuer Benutzer
 
Registriert seit: 08.05.2009
Beiträge: 13
kayamoto befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Mail Versand mit Attachment ohne "php mail" Funktion

Hallo,
ich habe eine Funktion geschrieben mit der man eine Email mit anhang versenden kann. Diese Funktion ist jetzt nur für eine PDF datei bestimmt.

Ein Problem bestand darin, dass die mail Funktion nicht benutzt werden konnte. Somit habe ich mir Hilfe geholt und eine andere möglichkeit gefunden die mail zu versenden.

PHP-Code:
/**
 * Sendet eine Mail direkt über den Unixserver
 *
 * @param array $to            array( emailadresse => name, emailadresse2 => name2, emailadresse3 => name3 ... );
 * @param array $from        array('name' => name, 'email' => email )
 * @param string $subject
 * @param string $body
 * @param string $header
 * @param string $file        attachment
 * 
 * klasse->sendmail( array('max@musterman.de' => 'Max', ), array( 'name' => 'Max', 'email' => 'max@musterman.de' ), $subject, $body );
 * 
 */
function sendmail($to$from$subject$body$file NULL 

    
    
$subject preg_replace('~([\xA0-\xFF])~e''"=" . strtoupper(dechex(ord("$1")))'$subject  );
    
$subject '=?ISO-8859-1?Q?' $subject '?=';
    
    
$header 'X-Mailer: PHP/' phpversion()."\r\n";
    
$header .= "Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable";
    
    
    if( 
$file ) {    
        
        
$message $body;
        
$boundary md5uniqid'1' ) );
        
        
$header  'X-Mailer: PHP/' phpversion()."\r\n";
        
$header .= "Mime-Version: 1.0 Content-Type: multipart/mixed;; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable boundary=\"$boundary\"\n";    
        
        
$attachment['subtype'] = 'pdf';
        
$attachment['type'] = 'application';
        
$attachment['rawMedia'] = basename$file );
        
$attachment['filename'] = $file;
        
        
$body "\nThis is a multipart message in MIME format.\n\n";
        
$body .= '--' $boundary "\n";
        
$body .= "Content-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: BASE64\n\n";
        
        
$body2 "";
        
        
$body2 .= "\n--" $boundary "\n";
        
$body2 .= "Content-Type: " $attachment['type'] . "/" $attachment['subtype'] . "; name=\"" $attachment['rawMedia'] . "\"\nContent-Transfer-Encoding: base64\n";
        
$body2 .= "Content-Disposition: attachment; filename=\"" $attachment['rawMedia'] . "\"\n\n";
        
$fp fopen$attachment['filename'], 'r' );
        
$content NULL;
        if( 
$fp ) {                        
            
$content fread$fpfilesize$attachment['filename'] ) );
            
fclose$fp );
            
        } else echo 
'Fehler';
        
        
$body2 .= chunk_split base64_encode$content ) );
        
        
$body2 .= "\n--" $boundary '--';
        
        
$signoff NULL;

        foreach (
$to as $key => $value){
            
            
$body $body chunk_splitbase64_encodestr_replace"\r\n""\n"$message."\r\n\r\n\r\n".str_replace'<returnpath>'$key$signoff ) ) ) ) . $body2;    
        }
    }
    
    foreach ( 
$to as $key => $value ){
    
        
$ToName $value;
        
$ToEmail $key;
        
        
        
$smtp fsockopen("localhost"25); 
        
        
$InputBuffer fgets($smtp1024)."\r\n"
        
        
fputs($smtp"HELO localhost\r\n"); 
        
$InputBuffer .= fgets($smtp1024)."\r\n"
        
fputs($smtp"MAIL From: {$from['email']}\r\n"); 
        
$InputBuffer .= fgets($smtp1024)."\r\n"
        
fputs($smtp"RCPT To: $ToEmail\r\n"); 
        
$InputBuffer .= fgets($smtp1024)."\r\n"
        
fputs($smtp"DATA\r\n"); 
        
$InputBuffer .= fgets($smtp1024)."\r\n"
        
fputs($smtp"$header"); 
        
fputs($smtp"From: {$from['name']} <{$from['email']}>\r\n"); 
        
fputs($smtp"To: $ToName <$ToEmail>\r\n"); 
        
fputs($smtp"Subject: $subject\r\n"); 
        
fputs($smtp"$body\r\n.\r\n"); 
        
fputs($smtp"QUIT\r\n"); 
        
$InputBuffer .= fgets($smtp1024); 
        
        
fclose($smtp); 
        
    }
    return 
$InputBuffer;

Das ist die Komplette mail Funktion. Nicht ganz sauber, aber Funktioniert wenn keine Datei angegeben wird. Nur wenn eine Datei angegeben ist, ist irgendwo ein Fehler. Ich weis einfach nicht mehr weiter.

Kann mir da einer Helfen?
Sagt bescheid wenn ihr mehr Informationen braucht.

mfg kayamoto

Geändert von kayamoto (08.05.2009 um 10:26 Uhr).
kayamoto ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.05.2009, 10:30  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.849
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Du hast das Rad neu erfunden, auch wenn es noch etwas rumpelt. Wenn du ein rundes Rad möchtest, dann nutze eine der fertigen Mailklassen wie z.B. PHPmailer oder Swiftmailer.
Wolla ist offline   Mit Zitat antworten
Alt 08.05.2009, 10:42  
Neuer Benutzer
 
Registriert seit: 08.05.2009
Beiträge: 13
kayamoto befindet sich auf einem aufstrebenden Ast
Standard

Das Problem besteht darin, dass auf dem Server die phpmail Funktionalität mit attachment gespeert ist. Ich weis nicht warum, der verwalter ist der meinung, dass sonst konflikte entstehen.

Es muss doch irgendwie Funktionieren. Wenn kein attachment vorhanden ist, Funktioniert der mailversand einwandfrei. Liegt es Vieleicht daran, dass die Daten insgesamt dann zu groß für diese Art von Versand sind?
kayamoto ist offline   Mit Zitat antworten
Alt 08.05.2009, 11:45  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Das was die funktion macht ist via smtp die mail zu verschicken, das können diverse andere fertige klassen wie wolla schon sagte auch, wie z.b. Zend_Mail, phpmailer, swiftmailer oder PEAR_Mail.

Sicher ein einfacherer Weg wir jetzt zu schauen ob deine methode sich an alle rfcs hält, debugging einzubauen etc ...
robo47 ist offline   Mit Zitat antworten
Alt 11.05.2009, 08:58  
Neuer Benutzer
 
Registriert seit: 08.05.2009
Beiträge: 13
kayamoto befindet sich auf einem aufstrebenden Ast
Standard

mit der normalen PhpMail Funktion Funktioniert es jetz doch, und ich habe wohl falsche Header Informationen eingetragen.Danke für die Hilfe
kayamoto ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Mail: inhalt wird bei gmx als attachment angezeigt? smogul PHP Tipps 2009 1 08.01.2009 20:15
dateien aus verzeichnis einzeln als mail attachment versenden mathes PHP Tipps 2008 5 17.07.2008 19:45
mail() an web und gmx kampfnickel PHP Tipps 2008 12 23.09.2007 00:03
Unterschied zwischen mail() und popen(/usr/sbin/sendmail)... DonTermi PHP Tipps 2007 8 27.03.2007 13:25
Funktion Mail() verwenden bendigo PHP Tipps 2006 2 05.05.2006 11:44
mail attachment abspeichern PHP Tipps 2006 4 17.03.2006 15:08
mail() und boundary Problem Gef PHP Tipps 2006 4 02.03.2006 00:47
Mail mit mail() kommt nicht an center PHP Tipps 2005-2 5 18.08.2005 13:02
Mail adresse überprüfen? PHP Tipps 2005-2 6 16.06.2005 11:53
Mit der PHP mail() Funktion eine HTMl mail verschicken? PHP Tipps 2005 6 09.05.2005 07:13
[Erledigt] php mail() header &amp;amp;amp;amp;amp; Spam Problem PHP-Fortgeschrittene 4 04.05.2005 12:31
[Erledigt] Error Mail() function PHP Tipps 2005 3 14.04.2005 03:32
pear mime mail >> attachment funktioniert nicht PHP Tipps 2005 4 28.01.2005 16:23
mehrere Atachement mit HTML Mime mail class??? 18inch PHP Tipps 2004-2 1 28.11.2004 23:58
[Erledigt] mail() - mail header PHP-Fortgeschrittene 2 28.09.2004 15:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-fortgeschrittene/54894-erledigt-mail-versand-mit-attachment-ohne-php-mail-funktion.html, php mail attachment, mailto attachment, php mailversand, mailversand php, php smtp attachment, php mail attachment pdf, zend_mail attachment pdf, versand eines attachment, smtp php attachment, php mail smtp anhang, php attachment mail, php attachment, &quot php, versand von attachment, mailversand attachment mime type, content-type:text/html; charset=utf-8\\ncontent-transfer-encoding, php mail smtp attachment, mailto attachment funktioniert nicht, php mailversand mit attachment

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum