Avatar billede cybermaster Nybegynder
25. november 2003 - 16:24 Der er 16 kommentarer og
1 løsning

Send email "html" og txt

Hejsa alle sammen, i mysql ligger navn og mail adresse til en række brugerer.

Der skal sendes nyhedsbreve en gang om måneden.

Jeg havde tænkt det skulle være HTML baseret emails med et link til en side hvis brugeren ikke kan se html i deres mail system.

Men hvordan gør man det smartes så det stadivæk er pænt til alle de forskillige brugerer, på forskillege systemer.

Har fundet lidt forskillige muligheder her.

Men gerne noget erfaring fra jer eksperter...

/cm
Avatar billede Slettet bruger
25. november 2003 - 16:54 #1
Hold dig fra HTML e-mails. Så slipper du for meget bøvl. Lad evt. dine brugere selv vælge om de vil have nyhedsbrevet i txt eller HTML.
Avatar billede detox Nybegynder
25. november 2003 - 17:04 #2
Jeg vil foreslå du sender både tekst og html, så er du sikker på alle kan modtage dem.
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:06 #3
detox -->> Hvordan vil det så se ud, får brugerer der ikke kan modtage html?
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:07 #4
el_barto -->> Umidelbart vil jeg give dig ret, men det er bare det, ar alle de "store" gør det, og det ser fint ud hos mig....
Avatar billede detox Nybegynder
25. november 2003 - 17:07 #5
Du kan opbygge det sådan:

    $header  = "From: ".$from."\r\n";
    $header .= "Reply-To: ".$reply_to."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: Multipart/Alternative; boundary=\"part boundary\"";
    $body = "--part boundary\r\n";
    $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
    $body .= "\r\n" . $txt . "\r\n";
    $body .= "\r\n--part boundary\r\n";
    $body .= "Content-Type: text/html\r\n";
    $body .= "\r\n" . $htm . "\r\n";
    $body .= "\r\n--part boundary--\r\n";
    $subject = $subj;

Så kan du jo lægge dit link i $txt.
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:10 #6
Jeg har leget lidt med denne fundet på www.php.net

<?php

// some local variables
$from_name = "";
$from_email = "";
$to_name = "";
$to_email = "";
$subject = "Fantastic Subject";

// headers need to be in the correct order...
$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";

//plaintext section begins
$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";

// your text goes here
$message .= "blah blah -- plaintext version of the message\n";
$message .= "\n";

// html section begins
$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";

// your html goes here -- It didn't appear properly without
// the weird markup that outlook added after sending
$message .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
$message .= "<HTML><BODY>\n";
$message .= "blah blah -- html version of the message\n";

// look ma, I'm referencing an img attachment (see below)
// watch out for weird markup!!!
$message .= "<IMG src=3D\"cid:some_picture\">\n";
$message .= "</BODY></HTML>\n";
$message .= "\n";

// this ends the message part
$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "\n";

// now we add attachments (images, etc)
$message .= "------=MIME_BOUNDRY_main_message\n";
$message .= "Content-Type: image/gif; \n name=\"some_picture.gif\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-ID: <some_picture>\n";
$message .= "\n";
// (truncated for space)
$message .= "R0lGODlheAAZAKIHAMTExCQkJJOTk\n";
$message .= "eLo7wzDKSatVQ5R3u7dDUUjcZ34D\n";
$message .= "\n";
// etc...etc...etc...

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

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

?>

og jeg modtager dette:


type="multipart/alternative"; boundary="----

=MIME_BOUNDRY_main_message"
X-Sender: navn<info@mail.dk>
X-Mailer: PHP4
X-Priority: 3
Return-Path: <info@mail.dk>
This is a multi-part message in MIME format.
------=MIME_BOUNDRY_main_message
Content-Type: multipart/alternative; boundary="----=MIME_BOUNDRY_message_parts"


------=MIME_BOUNDRY_message_parts
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

blah blah -- plaintext version of the message

------=MIME_BOUNDRY_message_parts
Content-Type: text/html;
    charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><BODY>
blah blah -- html version of the message
<IMG src=3D"cid:some_picture">
</BODY></HTML>

------=MIME_BOUNDRY_message_parts--

------=MIME_BOUNDRY_main_message
Content-Type: image/gif;
name="some_picture.gif"
Content-Transfer-Encoding: base64
Content-ID: <some_picture>

R0lGODlheAAZAKIHAMTExCQkJJOTk
eLo7wzDKSatVQ5R3u7dDUUjcZ34D

------=MIME_BOUNDRY_main_message--
Avatar billede detox Nybegynder
25. november 2003 - 17:13 #7
Ja, jeg må så sige at det ikke overholder standarden. Den siger bl.a. at man skal benytte: \r\n og ikke \n.
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:16 #8
Kan point gøre at du vil lave et færdigt scrip det holder til forskillige mail systemer, med headers, og hvad der ellers skal laves.

Du behøver selvfølgelig ikke lave db, forms eller noget... bare scriptet.
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:19 #9
Også gerne med lidt forklaringerer, hvad de forskillige punkter gør, så det kan være lidt lærerigt
Avatar billede detox Nybegynder
25. november 2003 - 17:28 #10
Ja, der er ikke så meget mere at lave, du skal bare sørge for at lææge dine data i:

$to
$from
$reply_to
$txt
$htm
$subj;

og så sende den afsted med:
mail($to, $subj, $body, $header);
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:32 #11
Det er bare supert, læg et svar, så kigger jeg på det og vender tilbage.
Avatar billede detox Nybegynder
25. november 2003 - 17:39 #12
Jo ok.
Avatar billede cybermaster Nybegynder
25. november 2003 - 17:54 #13
Skal den skrive dette så det kan ses i mailen:

Content-Type: Multipart/Alternative; boundary="part boundary"

--part boundary

Content-Type: text/plain; charset=ISO-8859-1



 



--part boundary

Content-Type: text/html



 



--part boundary--
Avatar billede detox Nybegynder
25. november 2003 - 17:58 #14
Nej, det skulle den ikke gerne.
Avatar billede detox Nybegynder
25. november 2003 - 18:08 #15
Dette skulle virke:

<?
$to = "email@adresse.dk";
$from = "email@adresse.dk";
$reply_to = "email@adresse.dk";
$txt = "http://www.domain.dk";
$htm = "<b><i>Hej der</i></b>";
$subj = "Emne";

    $header  = "From: ".$from."\r\n";
    $header .= "Reply-To: ".$reply_to."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: Multipart/Alternative; boundary=\"part boundary\"";
    $body = "--part boundary\r\n";
    $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
    $body .= "\r\n" . $txt . "\r\n";
    $body .= "\r\n--part boundary\r\n";
    $body .= "Content-Type: text/html\r\n";
    $body .= "\r\n" . $htm . "\r\n";
    $body .= "\r\n--part boundary--\r\n";
    $subject = $subj;

mail($to, $subject, $body, $header);
?>
Avatar billede detox Nybegynder
25. november 2003 - 18:10 #16
Hvis du har problemer med det kan du eksperimentere med at bytte: \r\n ud med: \n. Jeg har hørt at nogle servere bruger dette (ikke standard) format.
Avatar billede cybermaster Nybegynder
26. november 2003 - 11:42 #17
bår man fjerne \r i scriptet, virker det langt bedre,
i outlook blv det vist med: Hej der

Men på ofirs mail konto: <b><i>Hej der</i></b>
hvor det vel burde være: http://www.domain.dk

Eller hva ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester