» »

SMTP

SMTP

Base-T ::

Pozdravljeni vsi zagrizeni programerji!

Imam eno prošnjo, ki je sledeča:
- želel bi imeti smtp sprogramiran v C - ju, po možnosti vključeno uporabo tudi priponk.

Najlepša hvala!

StratOS ::

Poglej malo po netu ...
Imaš že veliko kontrol in dodatkov za le te, da je uporaba enostavna - le najti je treba.


... in to ti je prošnja.
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"The one who is digging the hole for the other to fall in is allready in it."

NoUse4AName ::

Želiš sam implementirat smtp, ali hočeš samo imet funkcionalnost? Če želiš sam implementirat moraš vedet kako se dela z socketi in poznat moraš smtp protocol. Ne se vstrašit glede velikosti dokumenta smtp protocola, saj je namreč precej preprost.

Base-T ::

Ja smtp želim sam implementirat, zanima me samo če ima kdo že narejenega, ker bi ga res rabil.
Samo delo s socketi mi je poznano, problem je le pri delu s priponkami.

BlueRunner ::

SMTP (RFC-2821) se ne ukvarja s priponkami. Priponke so stvar standardne oblike medmrežega sporočila (Internet Message Format: RFC-2822), za vsaj približno dobro razumevanje pa potrebuješ še znanje o večnamenskih razširitvah za medmrežna sporočila (Multipurpose Internet Mail Extensions - MIME). Podatke o MIME pa dobiš v RFC-jih 2045, 2046 in 2047. Primere najdeš v RFC-2049. Če pa boš želel početi še kaj bolj naprednega, pa ne bo odveč, če pogledaš še RFC-2110 (MHTML), RFC-2111 (notranji identifikatorji), RFC-2112 (Multipart/related), RFC-2183 (Content-Disposition), RFC-2231 (vrednosti parametrov in kodne tabele) in morda še RFC-2633 (S/MIME).

Če bi postavil bolj konkretno vprašanje kaj točno želiš početi z vsebino sporočil, se bo ta nabor lahko omejil, mogoče pa bo postalo možno napisati tudi kakšen kos kode, ki rešuje kakšno zanimivo težavo. Nikakor pa ne pričakuj 100 vrstic kode, ki bodo rešile težavo tipa "dela nekaj s priponkami". Za začetek bi morali vedeti vsaj o kakšnih priponkah se pogovarjami in kaj naj se bi s priponkami počelo.

Upam pa, da razumeš, da je pisanje SMTP strežnika (ali klienta) trivialno početje, glede na smiselno obravnavo e-poštnih sporočil, ki se jih prejema/pošilja s pomočjo SMTP protokola. Pri vsebini sporočil je možnosti in kombinacij ogromno, obravnava vsebine sporočil, še posebej MIME sporočil, pa je daleč od trivialne.

Base-T ::

Želim poleg standardnega sporočila nekomu (to je že narejeno), poslati tudi navadno priponko s končnico .txt
To je vsa umetnost, pa mislim da je ni 100 vrstic!

BlueRunner ::

100 vrstic mogoče res vzamem nazaj, res pa je, da na začetku sploh nisi povedal kaj točno potrebuješ. Sedaj pa, ko si povedal, pa ti seveda lahko pomagam jaz, ali pa tudi kdo drug. Jaz ti sicer ne bom dal programske kode, ker jo boš verjetno sam hitreje napisal v obliki, kot jo potrebuješ, ampak osnovno idejo ti pa lahko pojasnim...

Tole je navadno RFC-2822 sporočilo:

Glava
<CR><LF>
Telo
.<CR><LF>


Če pa želiš v sporočili priponko, ga razdrobiš na MIME kose (MIME parts). To narediš tako, da v glavo vključiš naslednja polja:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----SEPARATOR_MIME_KOSCKOV----"


Telo sporočila pa je potem strukturirano tako:

Bla bla bla, tole se ne bo prikazalo.
----SEPARATOR_MIME_KOSCKOV----
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Tukaj se nahaja vsebina sporocila. Tokrat samo 7-bitni znakci,
kar seveda izkljucuje nase krilatce. Popravi glavo tega koscka,
ce potrebujes sumnike.

----SEPARATOR_MIME_KOSCKOV----
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="mojadatoteka.bin"
Content-Transfer-Encoding: base64

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAA ...
... Base64 enkodirana vsebina priponke ...
... TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAA
----SEPARATOR_MIME_KOSCKOV----


Niz "----SEPARATOR_MIME_KOSCKOV----" je poljuben, vendar pa je samo po sebi razumljivo, da ni dobro, da se pojavi v vsebini sporočila. Dejanski treminator je sicer CRLF + separator + CRLF, vendar pa je še vedno dobro biti pozoren. Ravno tako pazi na znak ".", saj kombinacija CRLF + "." + CRLF (samo pika v vrstici) pomeni konec sporočila po SMTP protokolu. Pri pošiljanuju moraš takšne "solo" pike podvojit, da ne narediš napake. Tekstnovnih datotek sicer res ne rabiš pošiljati kodiranih v Base64, vendar pa pazi, da boš navedel kodno tabelo takšne datoteke. "application/octet-stream" je splošen MIME tip za binarno vsebino, če pa pošiljaš datoteki, ki ima standarden MIME tip, ga je dobro uporabiti (application/pdf, application/msword, image/jpeg, ...).

V grobem je to to, če pa sem povedal premalo, pa vprašaj... Sicer ti res lahko napišem nekaj vrstic kode, ki demonstrirajo izgradnjo sporočila, vendar pa jih boš za svoj program verjetno hitreje napisal sam.

Zgodovina sprememb…

Base-T ::

Hvala za pomoč.
Mislim da mi bo to res koristilo.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

e-mail spoofing s telnet povezavo na port 25 SMTP strežnika

Oddelek: Omrežja in internet
172350 (2059) BlueRunner
»

Poslijanje majla preko SMTP (IIS); kako?

Oddelek: Omrežja in internet
81602 (1519) Microsoft
»

vprašanja v zvezi z novico "Siol does it again" (strani: 1 2 3 )

Oddelek: Omrežja in internet
14012905 (10382) Bakunin
»

Siol does it again (strani: 1 2 3 4 )

Oddelek: Novice / Omrežja / internet
16316433 (16433) Bakunin
»

Čudn email - Mail delivery failed

Oddelek: Pomoč in nasveti
71335 (1177) Kaboom

Več podobnih tem