Napisałem klienta SMTP, który wysyła wiadomości e-mail z załącznikami. Wszystko jest w porządku, z wyjątkiem tego, że kiedy e-mail wysłany przez mój program jest odbierany przez program Outlook wyświetla dwa załączniki - plik faktycznie wysłany i plik z dwoma znakami CR i LF wewnątrz i ten plik ma nazwę ATT ?????. Txt.Załączniki ATTnnnnn.txt po otrzymaniu wiadomości e-mail w programie Outlook
Poszukałem - znalazłem wiele meczów, takich jak this dla podobnych problemów i sprawdziłem wszystko, co mogłem. Co więcej - porównałem dwa e-maile - wysłane przez mój program i wysłane przez Operę i nie mogę wywnioskować różnicy. Jednak to, co Opera wysyła, jest interpretowane poprawnie, ale to, co mój program wysyła, nie jest. To, co mój program wysyła, jest poprawnie interpretowane przez zestaw innych klientów pocztowych, ale nie przez program Outlook.
Mam telnet'et do serwera SMTP, ściągnąłem dwa e-maile do pliku tekstowego - jeden z mojego programu, drugi z Opery i porównałem je obok siebie. Nie widzę żadnej różnicy, która mogłaby wpłynąć na interpretację przez klienta poczty e-mail.
Oto przykładowa wiadomość (adresy podstawione, zawartość pliku przycięte, puste linie dokładnie tak, jak pojawiają się one w rzeczywistych wiadomości, linie nigdy przekraczać 80 znaków):
To: [email protected], [email protected] Subject: subject Content-Type: multipart/mixed; boundary="------------boundary" MIME-Version: 1.0 --------------boundary Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 here goes the Base64 encoded text part - it may be localized, so it's better to UTF8 it and do Base64 --------------boundary Content-Disposition: attachment; filename="file.jpg" Content-Type: application/octet-stream; name="file.jpg" Content-Transfer-Encoding: base64 here goes the Base64 encoded file data --------------boundary
Próbowałem grać z wierszami po ostatnim granicę - wypróbowany żaden, jeden, dwa, trzy, ale to nie poprawia sytuacji.
Czy istnieje zestaw dziwnych ograniczeń, które musi wykonać klient pocztowy, aby wygenerować wiadomości poprawnie interpretowane przez program Outlook?
można zaksięgować dokładną wiadomość klient SMTP generuje? Jestem pewien, że popełniłeś błąd w nagłówkach wiadomości. – Tomalak
Czy na końcu nie powinno być "-------------- granicy"? (Zwróć uwagę na dwa dodatkowe kreski) – Tomalak
Tak, tak, to dodatkowe dwa kreski na końcu !!! Nigdy nie przeczytałem o tym w żadnych dokumentach i jest to dla mnie kompletna niespodzianka. – sharptooth