PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

10-09-2003, 20:59
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
Bilder in html-mails
hallo zusammen,
ich hab mir heut mithilfe eures forums eine klasse geschrieben, die html- oder text-mails mit und ohne attachment als multipart-messages versendet. eure scripts und beiträge dazu waren sehr hilfreich :)
es gibt nur eine sache, die ich nicht hinbekommen habe und bei der mir die suche im forum auch keine hilfreichen beiträge liefern konnte.
wenn ich eine html-email versende (bah, sowas macht man nicht, aber mancher kunde wills haben), und in dieser email bilder verwende (z.b. ein logo), wieso taucht das logo dann nicht in der mail auf, obwohl es mit gleichem namen attached wurde?
beispiel: <html><body><img src="logo.jpg"> firmenname</body></html>
an der email hängt die datei logo.jpg an ... wird auch richtig angezeigt, wenn ich die datei öffne. trotzdem wird es mir in der html-ansicht (outlook) nicht angezeigt :(
muss ich bei den pfaden irgendetwas beachten oder bin ich komplett auf dem falschen dampfer. klar könnte ich auch einen externen link auf das imageverzeichnis der domain des kunden benutzen, aber sowas ist ja noch furchtbarer, als html-mails selbst
hat jemand nen tip für mich?
vielen dank vorab
YellowSky
|

10-09-2003, 21:36
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
du musst das logo als cid im quelltext angeben.
vergleich mal die quelltexte deine newsletter datei und zumbeispiel einer outlookdatei.
OffTopic: Nix gegen HTML-Mails 
|

10-09-2003, 21:51
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
Zitat:
Original geschrieben von TobiaZ
du musst das logo als cid im quelltext angeben.
|
ach gottchen ... so ein umstand.
funktioniert das dann auch mit anderen mailreadern? speziell: was sagt aol dazu?? dann ist die methode mit dem nachladen des bildes vom server wohl doch die bessere!?
aber ich hab gerade gesehen, dass die dateien doch nicht korrekt übertragen werden. ich schätze mal, da sind irgendwo zu viele oder zu wenige umbrüche ... siehst du zufällig, wo?
(ausschnitt)
PHP-Code:
$this->attached[]= "\n--$this->boundary".
"\nContent-Type: application/octet-stream; name=\"$fileName\"".
"\nContent-Transfer-Encoding: base64".
"\nContent-Disposition: attachment; filename=\"$fileName\"".
"\n\n".chunk_split(base64_encode($fileContent));
Zitat:
Original geschrieben von TobiaZ
Nix gegen HTML-Mails
|
ich hab nix gegen html-mails ... zumindest nix wirksames  )
grüsse
YellowSky
|

10-09-2003, 21:57
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
also mit der cid das packen eben alle reader, die das packen
(klasse auskunft)  Naja, also outlook hats, mit aol hab ich nichts am hut, wenn der überhaupt html kann. aber denke die die multipart mit html könenn, können diese eingebetteten images auch machen.
ich bin zufällig grade am selben thema dran. denke der user soll selber entscheiden, ob er eingebettet haben will, oder ausm web, oder als text. hat alles vor und nachteile
Zitat:
"\n\n".chunk_split(base64_encode($fileContent));
|
warum zwei \n? ist aber denke ich nicht der fehler
Zitat:
ich hab nix gegen html-mails ... zumindest nix wirksames )
|
der ist fies!
|

10-09-2003, 22:09
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
Zitat:
Original geschrieben von TobiaZ
also mit der cid das packen eben alle reader, die das packen
(klasse auskunft) :D Naja, also outlook hats, mit aol hab ich nichts am hut, wenn der überhaupt html kann. aber denke die die multipart mit html könenn, können diese eingebetteten images auch machen.
|
hmm, dann muss ich das mal bei aol testen. dummerweise haben die kunden immer nen aol-account und die grössten probleme, wenn man html-mails oder mails mit anhängen schickt :((
Zitat:
Original geschrieben von TobiaZ
ich bin zufällig grade am selben thema dran. denke der user soll selber entscheiden, ob er eingebettet haben will, oder ausm web, oder als text. hat alles vor und nachteile
|
welcher user? der empfänger? wie soll man das denn realisieren? ob html oder text kann man während des sendens entscheiden bzw. bekommt der empfänger eine multipart-message mit html- und text-teilen gesendet.
Zitat:
Original geschrieben von TobiaZ
warum zwei \n?
|
gute frage, bei text-teilen müssen 2 zeilenumbrüche, damit die trennung zwischen header und text erkannt wird ... ich nehme mal an, dass das bei base64-teilen genauso gehen sollte ... aber auch mit einem umbruch ändert sich nix :(
grüsse
YellowSky
|

10-09-2003, 22:14
|
Günni
Master 
|
|
Registriert seit: Jun 2002
Ort: Landau/Pfalz
Beiträge: 2.589
|
|
Schau mal in den CodeSchnipsel nach, dort sollte eine Klasse drin sein mit der du sowas machen kannst...
__________________
mfg
Günni
Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
City-Tiger - Online durch die Straßen tigern...
|

10-09-2003, 22:22
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
@Günni: Du spielverderber! Da hat er sich mühevoll ne eigene klasse gebaut, und jetzt muss er ne fertig nehmen und die ganze arbeit umsonst???
bei mir können die user im profil entscheiden, was sie erhalten wollen. oder das system erkennt das autom.
|

10-09-2003, 22:25
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
Zitat:
Original geschrieben von Günni
Schau mal in den CodeSchnipsel nach, dort sollte eine Klasse drin sein mit der du sowas machen kannst...
|
danke, die hab ich schon gefunden. deine klasse ist eigentlich die basis von meiner version. aber ich hab sie noch ein wenig erweitert bzw. vereinfacht :)
und selbstgebaut ist schneller verstanden ;)
trotzdem danke
YellowSky
|

10-09-2003, 22:26
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
da hast du recht!
wie war doch gleich der autor?
|

10-09-2003, 22:32
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
@TobiaZ: welcher autor?
@Günni: magst du vielleicht mal nen blick drauf werfen ... vielleicht fällt dir was auf.
PHP-Code:
class sendmail {
var $from = "";
var $to = array();
var $subject = "";
var $text = "";
var $attached = array();
function sendmail( $f='', $t='', $s='', $b='', $a='' ) {
$this->boundary = strtoupper(md5(uniqid(time())));
if( !empty($f) ) $this->from( $f );
if( !empty($t) ) $this->to( $t );
if( !empty($s) ) $this->subject( $s );
if( !empty($b) ) $this->text( $b );
if( !empty($a) ) $this->attachment( $a );
}
function from( $f, $n='' ) {
$this->from = empty($n) ? $f : "$n <$f>";
}
function to( $t ) {
$this->to = is_array($t) ? $t : array($t);
}
function subject( $s ) {
$this->subject = $s;
}
function text( $t ) {
$this->text = /* html text */
"\n--$this->boundary".
"\nContent-Type: text/html; charset=\"iso-8859-1\"".
"\nContent-Transfer-Encoding: 8bit".
"\n\n$t".
/* plain text */
"\n--$this->boundary".
"\nContent-Type: text/plain; charset=\"iso-8859-1\"".
"\nContent-Transfer-Encoding: quoted-printable".
"\n\n".strip_tags($t);
}
function attachment( $f, $n='' ) {
$fileContent = is_file($f) ? join("", file($f)) : $f;
$fileName = empty($n) ? ( is_file($f) ? basename($f) : "attachment".count($attached).".dat" ) : $n;
if( !empty($fileContent) )
/* attach files */
$this->attached[]= "\n--$this->boundary".
"\nContent-Type: application/octet-stream; name=\"$fileName\"".
"\nContent-Transfer-Encoding: base64".
"\nContent-Disposition: attachment; filename=\"$fileName\"".
"\n\n".chunk_split(base64_encode($fileContent));
}
function send() {
$headers = /* multipart header */
"From: $this->from".
"\nReply-To: $this->from".
"\nX-Mailer: sendmail.class v.2 by future media".
"\nMIME-Version: 1.0".
"\nContent-Type: multipart/mixed; boundary=\"$this->boundary\"".
"\n\nThis is a multi-part message in MIME format.".
/* add text */
$this->text.
/* add attachments */
join( "", $this->attached).
/* end mail */
"--$this->boundary--";
$mailError = 0;
foreach( $this->to as $to )
if( @mail( $to, $this->subject, "", $headers ) ) $mailError--;
// debug
echo "<textarea style='width:800;height:300'>$headers</textarea>";
}
}
// test
$MM = new sendmail( "MultipartMail <server@actionscripter.de>", "tobias@actionscripter.de", "testmail", "das ist ein <img src='test.jpg'> <b>test</b>" );
$MM->attachment( "test.jpg" );
$MM->send();
danke
YellowSky
|

10-09-2003, 22:48
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
die originalklasse
|

10-09-2003, 22:58
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
Zitat:
Original geschrieben von TobiaZ
die originalklasse
|
von Günni
|

10-09-2003, 23:07
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
ah, ich habs gefunden :))
es muss so heissen:
PHP-Code:
$fileContent = is_file($f) ? fread(fopen($f,"rb"),filesize($f)) : $f;
mit file($f) liest man die datei nicht binär aus, sondern als ascii ...
EDIT:
übrigends wird jetzt auch das bild in der mail angezeigt ohne dass ich was ändern muss
danke für eure hilfe
YellowSky
Geändert von YellowSky (10-09-2003 um 23:14 Uhr)
|

11-09-2003, 01:16
|
Günni
Master 
|
|
Registriert seit: Jun 2002
Ort: Landau/Pfalz
Beiträge: 2.589
|
|
Poste deine Klasse wenn Sie fertig is auch noch in die Codeschnipsel...
__________________
mfg
Günni
Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
City-Tiger - Online durch die Straßen tigern...
|

11-09-2003, 01:23
|
YellowSky
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 8
|
|
klar, wenn du dich damit nicht übergangen fühlst :)
wie gesagt mit mails hab ich mich bisher nicht beschäftigt gehabt und mir mein wissen hier (hauptsächlich von dir) zusammengeklaut ...
grüsse
YellowSky
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|