Dodaj do ulubionych

VBA, FreeMail

07.01.15, 01:06
Nie mogę zmusić FreeMaila, by wysłał treść z zachowaniem przejścia do nowej linijki
Chr(13) & Chr(10).
Drań przy wysyłaniu zastępuje KAŻDY zestaw znaków sterujących z zakresu 9 do 13 zwykłą spacją Chr(32).
.strTransferEncoding = "8bit"
.strCharset = "windows-1250"
.strContentType = "Text/plain"
Przecież z TEGO wynika, że ten zestaw znaków powinien być normalnie "używalny", a k.... nie jest, albo - czort wie czemu - FreeMail jest jakoś wewnętrznie zazbrojony przeciw akurat tym znakom.
Miał ktoś z czymś takim do czynienia?
  • wariant_b 07.01.15, 08:03
    Niewiele pamiętam już z poprzedniej dyskusji na temat tej biblioteki
    i wysyłania maili spod Accessa. Będziesz musiał przypomnieć mi trochę
    na temat rozwiązania i podesłać kod VBA oraz wygenerowanego maila.

    Objawowo wygląda to tak, jakby gdzieś wepchał się html zamiast czystego tekstu.
    Być może rozwiązaniem będzie przesyłanie właściwego tekstu w załączniku
    a nie w treści maila.
  • kocinos 07.01.15, 09:24
    Dzięki.
    Na priva?
    Podeślę kod z biblioteką w załączniku, może być?
  • kocinos 07.01.15, 09:31
    Może tylko podpowiedz na jaki adres, bo jakoś nie mogę znaleźć ... ;)
  • wariant_b 07.01.15, 10:55
    > Może tylko podpowiedz na jaki adres, bo jakoś nie mogę znaleźć ... ;)

    Pytanie z rzędu głupich - oczywiście, że na forach GW używam maila gazetowego.
  • kocinos 07.01.15, 12:30
    Fakt, że nie najmądrzejsze to pytanie było, ale nie często wysyłam tu coś na priv, więc musiałem troszkę poszperać, jak się dopchać do Twojego adresu ;)
    Już się smaży, tylko spreparuję pliki, by było prościej "użyć" ...
  • wariant_b 07.01.15, 14:27
    Przyszło, ale trochę potrwa, zanim postawię maszynę wirtualną i zabiorę się za analizę.
    W międzyczasie przypomnij mi używaną konfigurację (wersja Windows i Accessa) oraz podeślij
    przykładowego maila, zrzut formatki z ekranu źródłowego oraz goły tekst maila w pliku .txt w załączniku.
    Podeślij także wersję maila z łamaniem wierszy za pomocą <CTRL>+<ENTER> w formatce.
  • kocinos 07.01.15, 20:12
    Powysyłałem, ale nie z konta w GW. Doszło?
  • wariant_b 07.01.15, 22:28
    Doszło i faktycznie wygląda to dziwnie.
    Na mailu masz prośbę o jeszcze jedną próbę z html z kompletem znaczników.
  • kocinos 07.01.15, 23:04
    Znaczy ustawienie text/html i ten sam zestaw znaków?
    Już się smaży ...
  • wariant_b 07.01.15, 23:59
    Niesamowite - wyciął wszystkie znaczniki html i nie obłożył tekstu własnymi znacznikami.
    Robi się coraz ciekawiej.
  • wariant_b 08.01.15, 00:02
    Aż z ciekawości spytam, czy naprawdę wstawiłeś tekst z mojego załącznika
    i na podglądzie pisma przewodniego było kodowanie html-owe?
  • kocinos 08.01.15, 01:55
    Sorry, ale maila wysłałeś na adres, który używam tylko z drugiego komputera (notebooka), tak, że Twój załącznik zobaczyłem dopiero przed chwilą.
    Wysłałem Ci (i sobie ...) go (z ustawieniem text/html) i u mnie wreszcie pojawił się sformatowany jak trzeba ...
    Mam przez to rozumieć, że będzie trzeba napisać procedurę "przepisującą" tekst do postaci html'owskiej przed wysłaniem?
  • kocinos 08.01.15, 12:54
    Znalazłem przyczynę, może się komuś przyda ...
    FreeMail wysyła teraz bez błędów "tworzenia nowej linii" w trybie text/plain, ALE:
    ciąg znaków przed poleceniem tworzenia nowej linii NIE MOŻE kończyć się znakiem "," (przecinek). Nie wiem czemu, ale postawienie tego znaku na końcu linii (PRZED Chr(13) & Chr(10)) powoduje ignorowanie tych znaków specjalnych MIMO prawidłowego użycia znaku " zamykającego ciąg znaków String ...
    wariant_b - Dzięki za cierpliwość i zainteresowanie, bo - wbrew pozorom - bez Twojej podpowiedzi nie wpadł bym na tą "wszę" ...
  • wariant_b 08.01.15, 16:08
    To podpowiem od razu drugą "wszę" tym razem dotycząca text/html
    znaczniki <br> działają i poprawnie łamią linię, a ponieważ pozostałe znaczniki
    można bez większych konsekwencji pominąć, przygotowanie tekstu jest prostsze
    niż ze wstawianiem DOS-owych kodów nowej linii.

    Ale wstawienie w tym miejscu tekstu sformatowanego jako strona html
    też ma sens z uwagi na większe możliwości edycyjne. Można go łatwo
    uzyskać formatując maila dowolnym klientem obsługującym format html
    (czyli praktycznie każdym współczesnym), wysyłając maila do siebie
    i kopiując fragment z postaci źródłowej jako tekst do wklejenia w Accessie.
  • kocinos 08.01.15, 17:23
    Dzięki.
    Poradziłem sobie trochę inaczej, bo user tej bazy raczej nie będzie formatował osobno tekstu w edytorze innym niż okno tej bazy ...;)
    Napisałem krótką procedurę podmieniającą znaki (Chr(13) & Chr(10)) na <br> i doklejającą na początku i końcu odpowiednie znaczniki, gdy tryb jest txt/html, a korygujący ten "przecinek", gdy jest txt/pain.
    Za Twoją radą użyję standardu html jako główny ...
    Nawiasem mówiąc, to nomen omen, że dosowski tryb nazywa się ... pain? ;)
  • kocinos 08.01.15, 18:00
    Oczywista literówka - plain, ale brzmi tak podobnie ... zwłaszcza dziś ...
  • wariant_b 08.01.15, 21:45
    Poczta jest w ogóle mocno starym rozwiązaniem pamiętającym jeszcze
    epokę przedinternetową, Znaki sterujące, z którymi masz problem kiedyś
    faktycznie sterowały mechaniką i elektryką urządzeń, a ślady dawno
    zapomnianego 7-bitowego kodowania są w mailach wszechobecne.

    Na html namawiam bardzo ostrożnie - o ile w nadajniku, który mi podesłałeś,
    nie stanowi większego problemu, to zdaje się masz również część odbiorczą,
    a tam bardziej złożony mail html może być trudny do obróbki programowej.

    Plain text, to czysty, niesformatowany tekst wygodny w obróbce. Robi się
    mniej więcej to, co zrobił u ciebie jakiś składnik oprogramowanie - usuwa
    "blanki" zastępując je pojedynczą spacją i można spokojnie przetwarzać.
    Wysuw może być używany do oddzielania paragrafów (akapitów), ale
    nie do zwykłego łamania tekstu. W przypadku html są to tagi <p> i </p>.
  • kocinos 09.01.15, 16:08
    Dzięki za uprzedzenie.
    Ta część "odbiorcza" FreeMaila jest mi potrzebna tylko jako "nośnik specyficznych załączników" i pozostanie jako plain, bo i tak jest odbierana z innego konta niż wysyłane są oferty, a treść jest używana tylko identyfikator, że "trzeba się zająć załącznikiem" ...
    Natomiast wysyłanie zróżnicowałem zależnie od tego, czy maszynka wysyła "do ludzi", czy do współpracującej bazy ...
    Jeśli Cię to interesuje, szczegółowiej mogę na priva, ale nie chcę "zaśmiecać" poczty ...;)
  • kocinos 09.01.15, 16:11
    Oups, wpadka ...
    Miało być "a treść jest używana tylko JAKO identyfikator" ...
  • kocinos 07.01.15, 10:33
    Żeby było śmieszniej, kod
    "bla" & Chr(14) & Chr(8) & Chr(13) & Chr(10) & "bla" daje w odczycie "bla" & Chr(32) & "bla",
    ALE
    "bla" & Chr(14) & Chr(8) & Chr(13) & Chr(10) & "bla" daje w odczycie "bla" & Chr(14) & Chr(8) & "Coś" & Chr(32) & "bla" ...
    Nic nie rozumiem ...
  • kocinos 07.01.15, 10:35
    Błąd wpisu.
    Po "ALE" miało być:
    "bla" & Chr(14) & Chr(8) & "Coś" & Chr(13) & Chr(10) & "bla"
  • wariant_b 07.01.15, 11:22
    Wygląda na to, że wysyłany tekst maila obkładany jest jakąś funkcją edycyjną typową dla html.
    Rozumiem, że przekłamanie następuje na etapie tworzenia, a nie przy odczytywaniu maila.
    Nie mam pojęcia, czy użycie znaczników właściwych dla html da jakiś pozytywny efekt.
    Ale najwyraźniej deklaracje typu "Text/plain" nie funkcjonują, a tylko są przenoszone.

    Naturalnym obejściem byłoby wysłanie problematycznej treści w załączniku,
    bo ten nie podlega obróbce innej niż kodowanie transmisji, a przy okazji można
    go skompresować i zaszyfrować, a treść odzyskać również przez oprogramowanie
    po stronie odbiorczej. Może okazać się, że także zapis treści maila do pliku pośredniego
    i pobranie tekstu maila z pliku działa skutecznie, czyli omija dodatkową edycję tekstu.
    Ale póki co mam za mało wiedzy o stosowaniu VBA z biblioteką FreeMail i muszę "pomacać".
    Dawno temu praktykowałem transport mailowy z linią poleceń Pegasusa i działało to poprawnie.

Popularne wątki

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka