php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.07.2007, 11:28  
Neuer Benutzer
 
Registriert seit: 17.07.2007
Beiträge: 2
actionjackson
Standard Emailversand: Html wird als Anhang angezeigt.

Hallo,

ich habe folgendes Problem: Ich versende Emails per Php mit folgender Function:

PHP-Code:

function email_sendEmail($email,$subject,$body,$htmlbody="none",$attachment_file="none",$attachment_name="none",$attachment_type="none"){

    
    
# Trenner
    
$separator md5(uniqid(time()));
    
    
    
# Header  
    
$header "From: test.de <system@test.de>";      
    
$header .= "\n"
    
$header .= "MIME-Version: 1.0"
    
$header .= "\n"
    
$header .= "Content-Type: multipart/mixed; boundary=$separator"
    
$header .= "\n\n"
    
$header .= "This is a multi-part message in MIME format"
    
$header .= "\n";

    
    
# Plain-Text Inhalt
    
$header .= "--$separator"
    
$header .= "\n"
    
$header .= "Content-Type: text/plain; charset=utf-8"
    
$header .= "\n"
    
$header .= "Content-Transfer-Encoding: 8bit"
    
$header .= "\n\n"
    
$header .= $body
    
$header .= "\n";
    
    
    
# Html Inhalt
    
if ($htmlbody != "none"){
        
        
$header .= "--$separator"
        
$header .= "\n"
        
$header .= "Content-Type: text/html; charset=utf-8"
        
$header .= "\n"
        
$header .= "Content-Transfer-Encoding: 8bit"
        
$header .= "\n\n"
        
$header .= $htmlbody
        
$header .= "\n";    
    }

    
    
# Attachment
    
if ($attachment_file != "none"){ 
        
        
$header .= "--$separator"
        
$header .= "\n"
        
$header .= "Content-Type: $attachment_type; name=$attachment_name"
        
$header .= "\n"
        
$header .= "Content-Transfer-Encoding: base64"
        
$header .= "\n"
        
$header .= "Content-Disposition: attachment; filename=$attachment_name"
        
$header .= "\n\n"
        
$filedata fread(fopen($attachment_file"r"), filesize($attachment_file)); 
        
$header .= chunk_split(base64_encode($filedata)); 
        
$header .= "\n";
    }


    
$header .= "--$separator--"
     
    
    
# Mail versenden
    
mail($email$subject""$header);     

Bisher hat das auch immer alles geklappt. Ich konnte reine Text-Mails, Html-Mails usw versenden.
Neuerdings zeigt mir zB Thunderbird aber die Html-Emails als Anhang an, wenn ich die Email zusätzlich noch als Plain/Text verschicke. Das brauche ich zB bei einem Newsletter.

Ist in meiner Funktion ein grober Denkfehler oder was ist da passiert?

Gruß,
der Jackson
actionjackson ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 17.07.2007, 11:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo und willkommen hier im Forum!
Das könnte ja auch am Thunderbird liegen ..

Ich kann dir nur raten, den phpmailer [1] zu verwenden, der abstrahiert dir die Verwendung komplett, du musst dich nicht mehr um Header kümmern, es funktioniert ganz einfach ohne wenn und aber.

Falls du trotzdem nicht auf deine Klasse verzichten möchtest, kann ich dir leider nicht weiterhelfen, da ich mein Wissen über den Aufbau von E-Mails verbannt oder nicht weiterausgebaut habe, seit es den phpmailer gibt, und da bin ich nicht der einzigste

Code-Beispiel für den phpmailer:
Code:
require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From     = "list@mydomain.com";
$mail->FromName = "List manager";
$mail->Host     = "smtp1.site.com;smtp2.site.com";
$mail->Mailer   = "smtp";

@MYSQL_CONNECT("localhost","root","password");
@mysql_select_db("my_company");
$query  = "SELECT full_name, email, photo FROM employee WHERE id=$id";
$result = @MYSQL_QUERY($query);

while ($row = mysql_fetch_array ($result))
{
    // HTML body
    $body  = "Hello <font size=\"4\">" . $row["full_name"] . "</font>, 

";
    $body .= "Your personal photograph to this message.

";
    $body .= "Sincerely, 
";
    $body .= "PHPMailer List manager";

    // Plain text body (for mail clients that cannot read HTML)
    $text_body  = "Hello " . $row["full_name"] . ", \n\n";
    $text_body .= "Your personal photograph to this message.\n\n";
    $text_body .= "Sincerely, \n";
    $text_body .= "PHPMailer List manager";

    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($row["email"], $row["full_name"]);
    $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");

    if(!$mail->Send())
        echo "There has been a mail error sending to " . $row["email"] . "
";

    // Clear all addresses and attachments for next loop
    $mail->ClearAddresses();
    $mail->ClearAttachments();
}
Das Unübersichtliche hierbei ist eigentlich lediglich das Erstellen der Daten für den phpmailer, die Aufrufe sind sehr einfach gestrickt wie du siehst.

[1] http://phpmailer.sourceforge.net
Zergling-new ist offline  
Alt 17.07.2007, 12:03  
Neuer Benutzer
 
Registriert seit: 17.07.2007
Beiträge: 2
actionjackson
Standard

Hallo Zergling,

danke für die schnelle Antwort. Ich habe die Lösung gefunden.
Es liegt am Content-Type:

aus

Content-Type: multipart/mixed;


muß

Content-Type: multipart/alternative;

werden.

Jetzt kann der Client selber entscheiden und die modernen Email-Programme blicken das. Thread kann geschlossen/gelöscht werden

Gruß,
der Jackson
actionjackson ist offline  
 


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
Keine Dateiendung bei Anhang moonshadow PHP Tipps 2008 0 25.11.2007 17:54
Bilder werden nicht angezeigt sawi PHP Tipps 2006 6 05.04.2006 13:53
email mit Anhang nick-parker PHP Tipps 2006 8 13.03.2006 16:27
E-Mail mit Anhang und Nachrichtentext PHP Tipps 2006 14 13.03.2006 15:46
[Erledigt] Zuviele Seiten werden angezeigt PHP Tipps 2007 5 24.12.2005 12:49
Email mit Anhang von Festplatte ckrentel PHP Tipps 2007 1 04.12.2005 16:02
alte Bildversion wird angezeigt PHP Tipps 2007 19 30.11.2005 17:52
php5 Seiten in htdocs werden nicht angezeigt. PHP Tipps 2005-2 26 25.06.2005 18:30
Teile der Seite werden doppelt angezeigt PHP Tipps 2005 8 06.05.2005 15:10
[Erledigt] Bilder werden nicht richtig angezeigt PHP Tipps 2005 31 30.04.2005 18:29
Die XML Seite kann nicht angezeigt werden c001130 HTML, Usability und Barrierefreiheit 0 20.01.2005 21:22
Mail mit Anhang / Kein Inhalt!? PHP Tipps 2004 20 15.10.2004 12:37
[Erledigt] Bild wird nicht angezeigt Server, Hosting und Workstations 7 03.09.2004 16:08
E-Mail mit Anhang PHP Tipps 2004 5 09.08.2004 17:11
multipart/remixed-mail speichert den Text als Anhang woods PHP Tipps 2004 0 25.07.2004 13:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mailer email im plaintext immer doppelt mit header, html wird als attachment dargestellt, html mails anhang barrierefrei, anhänge werden als html angezeigt, email body wird als text anhang dargestellt, php mail multipart/mixed \angezeigt\, php mail anlage wird im body angezeigt, html email mit anhang, php mail mit attachments content als anhang dargestellt, phpmailer bei thunderbird kein anhang, plain text nachricht mit anhang phpmailer, thunderbird textinhalt als anhang, phpmailer html bilder nicht im anhang angezeigt werden, e-mail mit html anhang, phpmailer addstringattachment utf-8, addstringattachment utf-8, php multipart/alternative text/html mit anhang, header.html als anlage, anhang wird als text angezeigt, email mit anhang ohne header

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:41 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.