[GastForen Programmierung/Entwicklung PHP und MySQL HTML-EMail mit Grafiken

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

HTML-EMail mit Grafiken

Neppo
Beiträge gesamt: 50

29. Jul 2004, 12:47
Beitrag # 1 von 11
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe ein Script geschrieben, mit dem HTML-eMails verschickt werden (Newsletter). Jede eMail hat ein festes Layout mit 3 Grafiken. Momentan ist es so gelöst, dass die Grafiken zu einem WebServer verlinkt sind (also über den normalen <IMG SRC="...">-Tag).

Ich möchte jedoch, dass die 3 Grafiken mit der eMail verschickt werden.
Beispiel: Wenn ich per Word eine eMail erstelle und eine Grafik einfüge (nicht anhänge), wird die Grafik beim Empfänger in der eMail angezeigt, jedoch nicht als Anhang beigefügt.

Ist dies per PHP auch möglich?
X

HTML-EMail mit Grafiken

oesi50
  
Beiträge gesamt: 2315

29. Jul 2004, 14:45
Beitrag # 2 von 11
Beitrag ID: #100157
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Mail sieht so aus:

From: from@example.com
To: to@example.com
Content-Type: multipart/related; boundary="_----------=_1091104458308240"
MIME-Version: 1.0
Subject: HTML mit Bildern!

This is a multi-part message in MIME format.

--_----------=_1091104458308240
Content-Disposition: inline
Content-Length: 867
Content-Transfer-Encoding: binary
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>HTML mit Bildern!</TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD><IMG SRC="cid:birne.gif" WIDTH="207" HEIGHT="290" BORDER="0" ALT="Birne"></TD>
<TD><IMG SRC="cid:apfel.gif" WIDTH="207" HEIGHT="290" BORDER="0" ALT="Apfel"></TD>
</TR>
</TABLE>
</BODY>
</HTML>

--_----------=_1091104458308240
Content-Disposition: inline; filename="apfel.gif"
Content-Id: apfel.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif; name="apfel.gif"

R0lGODlhFgHzALMAAAQCBAT+BPwCBPz+/IRCBAcAABsAAAAAAHgANwEAABMT
AAAAAPg1AAMAACEAAAAAACH5BAEAAAMALAAAAAAWAfMAQwT/cMhJq7046827
/2AojmRpnmiqrmzrvnAsz3Rt33iu77wK/ICecEgsdgCBpDIQ9AAI0OhxqfwZ
r9isCEntNjXPqJTC7Zq/2rQ6XTZT0ZgwQfJzV9f4vH5Qty/hE2J+THuFhnlt
....
gekürzt

--_----------=_1091104458308240
Content-Disposition: inline; filename="birne.gif"
Content-Id: birne.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif; name="birne.gif"

R0lGODlhzwAiAbMAAAQCBPz+BPz+/ICAgEgBQM8AAxYAEAAAAHgAggEAABMT
AAAAACQVAAMAAA8AAAAAACH5BAEAAAIALAAAAADPACIBQwT/UMhJq7046827
....
gekürzt

--_----------=_1091104458308240--

Die Bilder werden als MIME kodierter Anhang eingebunden und im HTML-Text mit src="cid:Anhangname" verwendet.

Hier ist mal ein Beispiel, da kannst Du Dir eine komplette Website mailen.

http://vsrv.de/...mail/htmlmail2.shtml

Dieses Beispiel habe ich allerdings in Perl geschrieben, es dürfte aber mit PHP auch kein Problem sein.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#100099]
(Dieser Beitrag wurde von oesi50 am 31. Jul 2004, 10:18 geändert)

HTML-EMail mit Grafiken

Neppo
Beiträge gesamt: 50

29. Jul 2004, 15:31
Beitrag # 3 von 11
Beitrag ID: #100182
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wäre es möglich, dass Du mir den Quellcode des Beispiel mailst?


als Antwort auf: [#100099]

HTML-EMail mit Grafiken

oesi50
  
Beiträge gesamt: 2315

29. Jul 2004, 15:41
Beitrag # 4 von 11
Beitrag ID: #100188
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
my %ilist;
$content =~ s/(<img[^>]*src=['"]?)(.+?)(['"][^>]*>)/$ilist{$2}++;"$1cid:$2$3"/ige;

use MIME::Lite;
$msg = MIME::Lite->new(
From => $mailfrom,
To => $mailto,
Subject =>'HTML mit Bildern!',
Type =>'multipart/related'
);
$msg->attach(Type => 'text/html',
Data => $content
);

for my $img(sort keys %ilist) {
print "$dir$img ";
$img =~ /^.*\.(.*)$/;
print "$img ";
$msg->attach(Type => "image/$1",
Id => $img,
Path => "$dir$img",
);

}

$msg->send();

Das ist aber noch nicht der Weisheit letzter Schluss. Dieser Code funktioniert nur, wenn die Bilddateien in dem selben Verzeichnis wie die HTML-Datei liegen.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#100099]
(Dieser Beitrag wurde von oesi50 am 29. Jul 2004, 17:21 geändert)

HTML-EMail mit Grafiken

Anonym
Beiträge gesamt: 22827

30. Jul 2004, 19:00
Beitrag # 5 von 11
Beitrag ID: #100456
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe nun folgendes Script. Wenn ich eine eMail schicke und über Outlook diese ansehe, dann ist alles wunderbar! Bei http://www.web.de ebenfalls. Jedoch wird bei GMX überhaupt nichts angezeigt (nicht mal die Text-Version)!
Weiß jemand zufällig woran dies liegen könnte?


<?php

// some local variables
$from_name = "Name";
$from_email = "email@xyz.com";
$to_name = "ToName";
$to_email = "toemail@xyz.de";
$subject = "Test";


$headers = "From: $from_name<$from_email>\n";
$headers .= "Reply-To: <$from_email>\n";
$headers .= "MIME-Version: 1.0\n";
// the following must be one line (post width too small)
$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";

$headers .= "X-Sender: $from_name<$from_email>\n";
$headers .= "X-Mailer: PHP4\n"; //mailer
$headers .= "X-Priority: 3\n"; //1 UrgentMessage, 3 Normal
$headers .= "Return-Path: <$from_email>\n";
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= "------=MIME_BOUNDRY_main_message \n";
$headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\n";


$message = "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";

$message .= "text version\n";
$message .= "\n";


$message .= "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/html;\n charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";

$message .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
$message .= "<HTML><BODY>\n";
$message .= "<b>html</b> version\n";


$message .= "<IMG src=3D\"cid:testpic.gif\">\n";
$message .= "</BODY></HTML>\n";
$message .= "\n";


$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "\n";


$message .= "------=MIME_BOUNDRY_main_message\n";
$message .= "Content-Type: image/gif; \n name=\"testpic.gif\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-ID: <testpic.gif>\n";
$message .= "\n";

$dateiname = "testpic.gif";
$message .= chunk_split(base64_encode(fread(fopen($dateiname, "r"), filesize($dateiname))));
$message .= "\n\n";


//message ends
$message .= "------=MIME_BOUNDRY_main_message--\n";

// send the message
mail("$to_name<$to_email>", $subject, $message, $headers);

?>


als Antwort auf: [#100099]

HTML-EMail mit Grafiken

Anonym
Beiträge gesamt: 22827

8. Sep 2004, 22:58
Beitrag # 6 von 11
Beitrag ID: #107678
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
29.07.2004 15:31
Wäre es möglich, dass Du mir den Quellcode des Beispiel mailst?


als Antwort auf: [#100099]

HTML-EMail mit Grafiken

Anonym
Beiträge gesamt: 22827

8. Sep 2004, 23:03
Beitrag # 7 von 11
Beitrag ID: #107680
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
29.07.2004 15:31
Wäre es möglich, dass Du mir den Quellcode des Beispiel mailst?


als Antwort auf: [#100099]

HTML-EMail mit Grafiken

Anonym
Beiträge gesamt: 22827

8. Sep 2004, 23:04
Beitrag # 8 von 11
Beitrag ID: #107681
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi

Könntest DU den Php-Code von dem Beispiel publizieren?

http://vsrv.de/...mail/htmlmail2.shtml

Danke

C.


als Antwort auf: [#100099]

HTML-EMail mit Grafiken

Anonym
Beiträge gesamt: 22827

8. Sep 2004, 23:05
Beitrag # 9 von 11
Beitrag ID: #107682
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi

Könntest DU den Php-Code von dem Beispiel publizieren?

http://vsrv.de/...mail/htmlmail2.shtml

Danke

C.


als Antwort auf: [#100099]

HTML-EMail mit Grafiken

Anonym
Beiträge gesamt: 22827

16. Sep 2004, 21:31
Beitrag # 10 von 11
Beitrag ID: #109207
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

ich komme ursprünglich aus einem ähnliche Thread.
Ich möchte gerne ein wählbares Bild versenden.
Dazu gibt es in einem HTML-Formular folgende Zeilen.

<tr>
<td colspan=4>
<p align="left"><span class="text2"><b>&nbsp; Bild:</b> <input type="file" name="bild" class="input"></input><br><i>Hier kannst Du ein Bild mitsenden das später neben Deiner Statistik auftaucht.</i></td></tr>

ich habe mir nun aus dem Vorschlag folgende Zeilen kopiert und abgewandelt um dies Bild zu versenden.

$dateiname= "$bild";
$message .= chunk_split(base64_encode(fread(fopen($dateiname, "r"), filesize($dateiname))));
$message .= "\n\n";

Aber ich bekomme folgende Fehlermeldung

Warning: fopen("", "r") - Inappropriate ioctl for device in /www/wbhost1/public_web/hn/www3/frankbelow/public_html/tday/test/anmeldung.php on line 19

Warning: stat failed for (errno=2 - No such file or directory) in /www/wbhost1/public_web/hn/www3/frankbelow/public_html/tday/test/anmeldung.php on line 19

Warning: Supplied argument is not a valid File-Handle resource in /www/wbhost1/public_web/hn/www3/frankbelow/public_html/tday/test/anmeldung.php on line 19



Line 19 ist folgende:
$message .= chunk_split(base64_encode(fread(fopen($dateiname, "r"), filesize($dateiname))));

Was muss ich machen damit man die Ausgewählte Datei versenden kann.
Und was noch interessant wäre. Kann nam ein maximum an Dateigöße oder Massen angeben und prüfen? (die natürlich im HTML)

gruß, Frank



als Antwort auf: [#100099]

HTML-EMail mit Grafiken

Kuschelmonster
Beiträge gesamt: 4

16. Sep 2004, 22:06
Beitrag # 11 von 11
Beitrag ID: #109211
Bewertung:
(6074 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach eins hab ich eben oben noch vergessen.
Vielleicht ist es ja hilfreich es live zu sehen.

unter

http://www1.hansenet.de/.../test/anmeldung.html

Gruß, Frank


als Antwort auf: [#100099]
X