Jak wyslać maila z zalącznikiem?

0

Jak wyslać maila z załącznikiem ?

Wyslać zwyklego maila to nie problem, tworze socketa, wysylam dane do strumienia, łacze się z smtp i jest ok. Kwestia jest przy zalączniku bo nie mam zielonego pojęcia jak sformatować dane aby smtp poprawnie je odczytał.

PS: Pisze w czystym QT.

0

Tam powinieneś nieco znaleŹć:
Wysyłanie e-mail'a z plikiem załącznika za pomocą MAPI.

http://cyfbar.republika.pl/differ.html#differ11

0

do keris: Sc0rp10n wyraźnie napisał, że chce to zrobić socketami, obsługując protokół SMTP na własną rękę, a nie przez windziarskie MAPI.

do sc0rp10n: Zainteresuj się formatem nagłówków maili, MIME i kodowaniem Base64. Poniżej masz przykład źródła maila z załącznikiem i którkie wyjaśnienie.

Date: Fri, 29 Oct 2004 02:41:56 +0200
From: Nadawca <[email protected]>
To: Odbiorca <[email protected]>
Subject: Temacik
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----------10F17245391BA9E5"

------------10F17245391BA9E5
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit

Zlookaj zał?cznik...
------------10F17245391BA9E5
Content-Type: text/plain; name="zal.txt"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="zal.txt"

QUJDREVGR0hJSktMTU5PUA==

------------10F17245391BA9E5--

Jak widzisz, wiadomość składa się z dwóch części, o czym świadczy nagłówek 'Content-Type: multipart/mixed'. Części są od siebie oddzielone tzw. boundary, czyli sekwencją znaków która nie występuje w mailu w żadnym innym miejscu, oprócz linii oddzielających poszczególne sekcje maila. W poniższym kodzie taką sekwencją jest '----------10F17245391BA9E5'.
Po każdym boundary następuje nagłówek MIME dla danej sekcji, oddzielony od jej zawartości jedną pustą linią.

Dla sekcji z treścią wiadomości mamy typ MIME 'text/plain' wraz z kodowaniem znaków. Po jednej pustej linii widać treść wiadomości, czyli 'Zlookaj zał?cznik...</code>'. Nagłówek '<code>Content-transfer-encoding: 8bit' mówi, że treść wiadomości zostanie przesłana bez zmian, jako 8-bitowe znaki ASCII.

Dla sekcji załącznika również podajesz typ MIME. W moim przypadku załączyłem plik tekstowy, więc tym MIME również jest 'text/plain'. Nagłówek "Content-transfer-encoding: base64</code>" mówi, że ta część jest zakodowana algorytmem Base64. Najważniejszy jest jednak nagłówek 'Content-Disposition: attachment; filename="zal.txt"'. To właśnie on oznacza, że dana sekcja wiadomości ma być traktowana jako załącznik (<code>attachment), i określa jego nazwę pliku.

0

keris: Nie pisze pod Windowsa.

GameCreator: THX wielkie, juz zapoznalem sie z odpowiednimi RFC :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1