Thread Multipart Mail: Plaintext / HTML mit Grafik (6 answers)
Opened by Captain Future at 2007-04-05 16:59

Captain Future
 2007-04-05 16:59
#9887 #9887
User since
2004-01-16
19 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

vielleicht kann mir ja einer von euch bei folgender Sache weiterhelfen.

Ich möchte eine E-Mail versenden die aus Plaintext und HTML mit Grafikanhang besteht und dem user je nach Mail-Client/Einstellung Plaintext oder HTML mit Grafik anzeigt.
Das ganze wenn möglich ohne Module!!

Es sollte also eine Multipart/alternative mail sein, die für den HTML und Grafik Teil nochmal eine Multipart/mixed Teil enthält.

## Multipart/alternative ANFANG
## Boundary 1
## Text Plain
## Boundary 1
#### Multipart/mixed ANFANG
#### Boundary 2
#### Content text/html
#### Boundary 2
#### Content image/gi || application/octet-stream
#### Boundary 2 Ende
#### Multipart/mixed ENDE
## Boundary 1 Ende
## Multipart/alternative ENDE

Irgendwie stimmt da was mit dem Header oder so nicht ?

Prob 1:
Die Mail wird nicht von vornherein als Mail mit Anhang ausgewiesen - erst nach aufruf.

Prob 2:
Die Grafikdatei sollte eigentlich in der Mail eingebettet sein.

Prob 3:
Die Mail sollte so konform sein, daß sie in möglichst vielen Mail-Clients und Betriebssystemen problemlos in Plaintext oder HTML angezeigt wird.

Prob 4:
Die Grafikdatei bleibt für alle Mails an verschiedene user gleich und sollte dann aus ner Variablen eingefügt werden, sodaß nicht jedesmal die Gif-Datei eingelesen und codiert werden muss.

Prob 5:
Die Textinformationen sind in dem Hauptscript in utf-8 gespeichert. Der Body-Text wird in der Mail richtig dargestellt nur der subject ist total kaputt.

Versand erfolgt übrigens per sendmail also auf nem unix-system mit Perl 5.8.8.

Hier mal mein Quellcode:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/perl

use strict;
use Time::Local;
use MIME::Base64;

# Variablen-Blub
#my(subject, text, htmlxode, ...) =

my $bild_anhang_dateiname = $dir_pic.'grafik.gif';
my $bild_anhang;
open(BILD, "<$bild_anhang_dateiname");
#binmode(BILD);
my $bild_anhang_dateigroesse = -s $bild_anhang_dateiname;
read(BILD, $bild_anhang, $bild_anhang_dateigroesse);
close(BILD);
my $mail_grafik = encode_base64($bild_anhang);

my $boundary = 'Message-Boundary'.'___'.time.$user_id.time;
my $boundary2 = 'Message-Boundary_2'.'___'.$user_id.time.$user_id;

open (MAIL, "|$mailprog -oi -t");
print MAIL "MIME-Version: 1.0\n";
#print MAIL "Return-Path: $mailsender\n";
print MAIL "Content-Type: multipart/alternative; boundary=\"$boundary\"\n";
print MAIL "From: $mailsender\n";
print MAIL "To: $user_email\n";
print MAIL "Subject: $subject\n\n";
print MAIL "This is a multi-part message in MIME format.\n";
print MAIL "--".$boundary."\n";
#### Die Nachricht als Text-Mail
print MAIL "Content-Type: text/plain; charset=\"utf-8\"\n";
print MAIL "Content-Transfer-Encoding: 8bit\n";
print MAIL "$text_part01 $user_name,\n\n";
print MAIL "$text_part02\n\n";
print MAIL "$text_part03\n";
print MAIL "$mail_link01\n\n";
print MAIL "$text_part04\n\n";
print MAIL "--".$boundary."\n";
### Anfang des 2. Teil der Mail mit HTML und Grafik (multipart/mixed)
print MAIL "Content-Type: multipart/mixed; boundary=\"$boundary2\"\n\n";
print MAIL "--".$boundary2."\n";
## Die Nachricht als HTML-Mail
print MAIL "Content-Type: text/html; charset=\"utf-8\"\n";
print MAIL "Content-Transfer-Encoding: quoted-printable\n";
print MAIL "$html_mail_message\n";
print MAIL "--".$boundary2."\n";
#print MAIL "Content-type: application/octet-stream; name=\"grafik.gif\"\n";
print MAIL "Content-type: image/gif; name=\"grafik.gif\"\n";
print MAIL "Content-transfer-encoding: base64\n";
#print MAIL "Content-Disposition: attachment; filename=\"grafik.gif\"\n";
print MAIL "Content-Disposition: inline; filename=\"grafik.gif\"\n";
print MAIL "$mail_grafik\n";
print MAIL "\n";
### Ende des 2. Teil der Mail mit HTML und Grafik (multipart/mixed)
print MAIL "--".$boundary2."--\n\n";
print MAIL "--".$boundary."--\n";

close (MAIL);


Wäre super wenn von euch jemand dazu eine Idee hätte und mir weiterhelfen könnte.

Schon danke im voraus.

Ciao Captain Future

View full thread Multipart Mail: Plaintext / HTML mit Grafik