Korrekt HTML levél küldése parancssorból

Sziasztok

Van úgy, hogy az ember fiának formázott levelet kell küldeni, persze automatizálva. Adja magát, parancssor.
Úgy tűnik, ahogy google-ből ellesi az ember egyeseknek nem jó.

Adva van a következő kód:



BOUNDARY="`date +'%G%m%d%H%M%S'`"

echo "From: felado <felado@domain.hu>
To: $email
Subject: Tárgy
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=\"$BOUNDARY\"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline

--$BOUNDARY
Content-Type: text/plain; charset=\"UTF-8\"
Content-Transfer-Encoding: 8bit

Ez egy sima szöveges tartalom azon klienseknek, amik nem bírkóznak meg a htmllel.

--$BOUNDARY
Content-Type: text/html; charset='UTF-8'
Content-Transfer-Encoding: 8bit

html head

/head
body

p Ez egy formázott HTML levél /p

/body
/html

--$BOUNDARY--

"  | sendmail $email

(A html nyitó és zárókaraktereket kievettem, mert az egészet kiszűrte a portál.)

Nos a gond az, hogy én teszteltem Thunderbirdben, The Bat! -ben, gmailben és mindenhol jó volt. Aki ismeri a The Bat!-ot tudja, hogy az egyszerű szöveget és a html szöveget külön fülekre tudja választani, mindkettő jó.

Vannak azonban olyanok, akinél krix-krax jelenik meg. Tipikusan az UTF8 kódolásból eredően.
Egy részük ms outlook v. outlook express-t használ, ahol talán még meg is érteném, de van olyan aki ugyanúgy böngészőn keresztül gmailben nézte, ahogy én teszteltem. Nála nem jó, nálam jó.

Próbaképp felnyitottam egy outlookból küldött levelet, hát kösssz, olyat inkább ne:)

Szóval hogyan lehetne egyszerűen, mégis mindenki számára érthetően formázott levelet küldeni?

Hozzászólások

Szia!

Az ilyen levelek formátumát az RFC822 írja le. A script-ed amit írtál már csak azért sem jó, mert a header-ben levő értékeket is kódolni kell.

Tipp: írd meg ugyan azt a levelet thunderbird-ben és a programoddal is. Ezután küld el őket. Majd mentsd le EML-ben és hasonlítsd őket össze.

Másik tipp: van egy python-ban írt programom ami tud ilyen levelet küldeni. Igaz ugyan, hogy bemenetként egy html állomány elérési útját várja. Cserébe viszont beágyazza a képeket is. Ha érdekel akkor írj privátot és elkülöm.

1. lehetõség a sendEmail: http://caspian.dotconf.net/menu/Software/SendEmail/ (bár ennek épp a multipart emailek Content-Type header-jével van egy bugja)
2. továbbra is csináldmagad:
- a Subject-et így kódold:
subj=$( echo "Levél trágya" | perl -pe 's/[^a-z0-9]/sprintf "=%02X",ord($&)/ige; $_="=?UTF-8?Q?$_?="' )
- a Body-t így kódold:
cat "$message_file" | recode ../qp
- header-eket ne felejsd el megadni:
Content-Transfer-Encoding: quoted-printable
Content-Typt: text/html; charset=UTF-8

nekem és a Lookout-os usereknek bevált.

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

Én így csináltam régen...

Annak a home konyvtaraba aki futtatja a parancsot,
hozd letre a .muttrc fajlt a kovetkezo tartalommal.


set from = "sender@domain.com"
set realname="Real Name"

Levélküldés...


mutt \
-e 'set content_type="text/html"' \
-s "Subject" \
-a attachment1.jpg \
-a attachment2.jpg \
-a attachment3.jpg \
recipient@domain.com \
< html_mail.html

--
maszili

Látom sokan subscribe-oltak. Ha valakit érdekel ez a kis nyúlfarknyi program:

https://rapidshare.com/files/1267881386/emailsender.tar

Szabályosan csatolja a html-ből hivatkozott pdf, doc, txt és más állományokat megfelelő mime type-pal. A html-ből hivatkozott helyi képeket pedig attach-olja mint külön content-et és úgy írja át a HTML-t hogy jól jelenjen meg a különféle levelező programokban. A HTML file UTF-8 lehet. A subject is az, de mivel azt parancssorból kell megadni ezért ott nehézségekbe ütközhet a megadásuk. Viszont maga az emailsender program egy fantasztikusan bonyolult 1.5KB-os file, bármit egyszerűen bele lehet írni.

Tudom, hogy ezzel nem leszek népszerű, de nem javaslom a parancssoros megoldást. Még ha sikerül is minden kliensben működő MIME struktúrát előállítani, a spamszűrőkön el fogsz akadni, mert azok olyan részeit nézik a levélnek, amire Te még csak nem is gondolsz. (Pl hogyan épül fel a boundary.) Nem véletlenül léteznek nagy gonddal megírt MIME libraryk a különböző programnyelvekhez.

"Tudom, hogy ezzel nem leszek népszerű, de nem javaslom a parancssoros megoldást."

Képzeljük el a következő helyezetet. Ugyanazt a levelet - mondjuk egy meghívót - kell kiküldened 100 címre. Nem spam, a címzetteket ismered, ők is ismernek téged, éppen emiatt azt akarod, hogy mindenki személyes "fejléccel" (névvel, címmel, titulussal megszólítva) kapja a levelet és a címsorban is csak az ő e-mail címe jelenjen meg, a másik 99 nélkül. A személyessé tételhez szükséges adatok természetesen rendelkezésedre állnak. Ha nem parancssoros megoldással, akkor hogyan csinálnád?

Van azért néhány trükk. Időközben nekem is körvonalazódtak a lehetőségek + kaptam néhány ötletet.
Pl. php-ban webes formban megírt szöveg, címzettek sql-ből kipörgetve,
$message = str_replace( '%%PERSON%%', ( empty( $data['name'] ) ) ? 'partnerünk' : $data['name'], $_POST['content'] );
A megírt levélben pedig Tisztelt %%PERSON%%!
Kellemes Ünnepeket :)