Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Redagowanie treści maila - jak to robić?

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Sieci komputerowe i Internet
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8311
Skąd: Toruń

PostWysłany: Pon Gru 08, 2014 1:11 pm  OP    Temat postu: Redagowanie treści maila - jak to robić? Odpowiedz z cytatem Pisownia

Robię funkcję do wysyłania dokumentów z programu na wyznaczony adres. Program ma wstawić pewien określony tekst w treść maila. Jeśli tekst jest dłuższy, to funkcja ma go połamać na poszczególne wiersze.
I tu nie wiem jak to zrobić, ponieważ jeśli tekst podzieliłem na odcinki, porozdzielane literałem VBNewLine to mail po odebraniu ma w treści tylko pierwszy wiersz, a reszta jest obcięta .

Z drugiej zaś strony, gdy odbieram inne maile z jakąś treścią i skopiuję ją na przykład do notatnika, to nie ma w niej podziału na wiersze. Dlatego mam pytanie jak to jest z tym redagowaniem treści maila, jak to robią programy pocztowe?

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
rzezuch



Dołączył: 18 Lis 2011
Posty: 79
Skąd: znienacka

PostWysłany: Wto Gru 09, 2014 12:00 pm      Temat postu: Odpowiedz z cytatem Pisownia

znacznik <br> zamiast VBNewLine. Przecież treść wiadomości jest html-em :)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8311
Skąd: Toruń

PostWysłany: Wto Gru 09, 2014 8:27 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Już myślałem, żę problem rozwiążę, ale niestety, zamiana VBNewLIne na <br> nic nie dała. Po prostu ciąg <br> został dopisany do wierszy , a poza tym cały tekst ciegnie sie, jak makaron, do końca okna poczty na portalu WP.pl. W załączniku przykladowy tekst odebranego maila nie podzielony na wiersze


Nie połamany tekst.png
 Opis:

Pobierz
 Nazwa pliku:  Nie połamany tekst.png
 Wielkość pliku:  51.13 KB
 Pobierano:  158 raz(y)


_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Sinus32



Dołączył: 20 Sty 2007
Posty: 908

PostWysłany: Wto Gru 09, 2014 8:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

rzezuch napisał:
znacznik <br> zamiast VBNewLine. Przecież treść wiadomości jest html-em :)

Nie zawsze. To programista decyduje czy treść jest html-em.
I tu pada podstawowe pytanie: Czy treść jest html-em? Bo jeżeli jest zwykłym tekstem to interpretacja znaku nowej linii spada na klienta poczty. I jeżeli klient poczty wypluwa maila tak jak jest na stronę html to nic się na to nie poradzi.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
samolot



Dołączył: 26 Sty 2006
Posty: 8311
Skąd: Toruń

PostWysłany: Wto Gru 09, 2014 9:30 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Takim kodem wstawiam treść maila
Kod:
  Dim Mail As New System.Net.Mail.MailMessage(m1, m2)    '(m1 i m2 w nawiasie to adresy nadawcy i odbiorcy)
  Mail.Body = Tresc


Konto pocztowe jest na wp.pl. Strona z pocztą wyśwetla odebraną treść, że tak powiem, 'w sobie'. Jeśli nadawca ten tekst pisał korzystajac okna pisania maila na portalu poczty wp.pl ,to układ tekstu w mailu odebranym jest taki sam, zachowuje podział na wiersze.
Jeśli zaś ja tę treść wstawiam z programu tak, jak pokazałem wyżej, to jedyną rzeczą, która na stronie załamuje tekst , jest koniec okna strony.
Ale na dole maila są dołączone dwa załczniki tekstowe. Drugi z nich zawiera treść listu. Gdy go kliknąć, to otwiera sie w osobnym oknie przegladarki treść podzelona na wiersze. Jesli ten tekst skopiować do notatnika, to on nie zawija wierszy, bo najprawopodobniej nie ma w tekscie zadnych znaków powrotu do nowej linii.

Nie potrzebuję tego , by w notatniku był podział na wiersze.
Chciałbym by po otwarciu maila na stronie poczty te treść wiświetlała sie z takim podziałem na wiersze, jak ja to przygotuję w programie wysyłajacym.
Więc jak to robią programisci 'z tamtej strony kabla' ?

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Sinus32



Dołączył: 20 Sty 2007
Posty: 908

PostWysłany: Wto Gru 09, 2014 11:13 pm      Temat postu: Odpowiedz z cytatem Pisownia

W takim razie wysyłasz wiadomość czysto tekstową.

Żeby wysłać html potrzebujesz czegoś podobnego do
Kod:

   Mail.Body = "<b>Test Mail</b><br>using <b>HTML</b>.";
   Mail.BodyEncoding = System.Text.Encoding.UTF8;
   Mail.IsBodyHtml = true;



Nie mam konta na wp, ale wiem że np. na tlenie pisząc maila da się przełączać pomiędzy pisaniem maila w html a czystym tekstem. Pisanie w html-u jest domyślne.

Teraz masz dwa wyjścia. Albo pozostać przy formacie tekstowym w którym formatowania nie da się zapisać i przy którym jesteś skazany na interpretację wiadomości przez klienta, albo piszesz maila w html.

Tylko że pisanie w html jest upierdliwe. Pobierz sobie źródło dowolnego rozbudowanego maila html z obrazkami w środku. Np: jakiejś nieagresywnej reklamy. Opcja taka jest zwykle dobrze ukryta i pod nazwą podobną do "Zapisz jako .eml". O ile tylko plik zapisze się w czystej tekstowej postaci to znajdziesz w nim nagłówki maila i treść w formacie podobnym do
Return-Path: <--->
Received: by ---) with LMTP;
Mon, 01 Dec 2014 13:20:36 +0100
Received: from --- [---]
by --- with ESMTP id ---;
Mon, 01 Dec 2014 13:24:08 +0100
Received-SPF: none (---: domain of ---
does not designate permitted sender hosts)
Date: Mon, 1 Dec 2014 13:24:08 +0100 (CET)
From: ---
To: ---
Message-ID: <--->
Subject: =?UTF-8?Q?---?=
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_885_710334303.1417436648972"
X-O2-Trust: 3, 80
X-O2-SPF: none

------=_Part_885_710334303.1417436648972
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=3D"http://www.w3.=
org/1999/xhtml" xml:lang=3D"pl"><head><meta http-equiv=3D"content-type" con=
tent=3D"text/html; charset=3Dutf-8" /><title>---</title><style type=3D"text/css"><!--
=09body, td {
=09=09color: #433D3D;
=09=09font-family: arial;
=09=09font-size: 12px;
...
=09table.foot td
=09{
=09=09padding: 3px;
=09}
=09
=09--></style></head><body><div id=3D"cont"><table style=3D"width: 650px;">=
<tr><td colspan=3D"2" style=3D"width: 650px; height: 90px;" background=3D"c=
id:logo1.jpg"></td></tr><tr><td colspan=3D"2" class=3D"news_title">---
<div class=3D"date">2014-12-01</div></td></tr><B_START>=
<tr><td class=3D"title" colspan=
...
...
...

------=_Part_885_710334303.1417436648972
Content-Type: image/jpeg; name=logo1.jpg
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=logo1.jpg
Content-ID: <logo1.jpg>

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+ENSWh0dHA6Ly9ucy5hZG9i
ZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6
TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0i
QWRvYmUgWE1QIENvcmUgNC4yLjItYzA2MyA1My4zNT...
...

Tak więc samo "<b>Test Mail</b><br>using <b>HTML</b>." to za mało.

Klasa MailMessage się domyśli, że musi wysłać wiadomość jako multipart/related jak pododajesz html i załączniki, ale sama treść powinna być poprawnym dokumentem HTML z pewnymi obostrzeniami. Nie stosujesz divów, layout robisz na tabelkach zawsze, style mogą nie działać więc stosujesz wszystkie znaczniki zdeprecjonowane. Absolutnie nie przejmujesz się standardem jakiegokolwiek html, a wręcz używasz wszystkich standardów naraz, łącznie z tymi niestandardowymi. Maile w html mało mają wspólnego z html przez to, że muszą być czytelne nawet dla najbardziej ułomnych klientów poczty wyposażonych w okrojone IE 5, oraz dla nowszych klientów którzy rozumieją xhtml jednocześnie. To po prostu jedno wielkie bagno.

Cytat:
Jeśli nadawca ten tekst pisał korzystajac okna pisania maila na portalu poczty wp.pl ,to układ tekstu w mailu odebranym jest taki sam, zachowuje podział na wiersze.

Sprawdź czy wiadomość jest redagowana jako html, czy jako tekst. Jeżeli nigdzie nie masz przełącznika tekst/html to pewno jest to html, ale pewność będziesz miał jak takiego maila zapiszesz do .eml, a potem podejrzysz w notatniku.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
samolot



Dołączył: 26 Sty 2006
Posty: 8311
Skąd: Toruń

PostWysłany: Wto Gru 09, 2014 11:21 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Ha, he, wlaśnie przed chwila wpadłem na to samo, a tu widze, że tez to napisaleś. Ja w programie miałem wpisane:
Kod:
            '15. Ustaw czy wiadomość ma byc w formacie HTML.
            Mail.IsBodyHtml = False

Zmieniłem to na True i tekst podzielony znacznikami <br> został wyswietlony na stronie poczty tak podzelony na wiersze, jak ja to tymi znacznikami podzieliłem. Mało tego, skopiowanie ze strony tego tektu do notatnika zachowuje podział na wiersze.
To jest to, co chiałem osiagnąć.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Sinus32



Dołączył: 20 Sty 2007
Posty: 908

PostWysłany: Wto Gru 09, 2014 11:26 pm      Temat postu: Odpowiedz z cytatem Pisownia

No to zostaje jeszcze tylko użyć HtmlEncode do wszystkiego co nie jest "<br>".

Html injection czai się na każdym kroku ;)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
samolot



Dołączył: 26 Sty 2006
Posty: 8311
Skąd: Toruń

PostWysłany: Wto Gru 30, 2014 7:47 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Wróciłem do tego tematu, bo próbowałem przykład z tej strony dostosować dla mojej funkcji ale jest kłopot ; poniżej jest cytat fragmentu tamtej klasy:
Imports System
Imports System.Web
Imports System.IO

Class MyNewClass
Public Shared Sub Main()
Dim myString As String
Console.WriteLine("Enter a string having '&' or '""' in it: ")
myString = Console.ReadLine()
Dim myEncodedString As String
' Encode the string.
myEncodedString = HttpUtility.HtmlEncode(myString)

W mojej klasie zaimpotowałem tylko przestrzeń System.Web , jak wyżej w wierszu 2 , i tylko chciałem użyć metody HtmlEncode ale nie wiem jak zedeklarować klasę HttpUtility, bo próbowałem tak: Public NotInheritable Class HttpUtility , jak tu pokazano, ale mam komunikat, że metoda HtmlEncode jest nie zrozpoznawana.
Celem moim jest tak "zakodować" wiersz tekstu by w mailu w formacie html nie gubił rożnych znaków interpunkcyjnych itp

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
JohnB



Dołączył: 07 Mar 2008
Posty: 793

PostWysłany: Wto Gru 30, 2014 8:13 pm      Temat postu: Odpowiedz z cytatem Pisownia

Dodaj w projekcie referencję do pliku dll System.Web

P.S. Public NotInheritable Class HttpUtilitty to deklaracja nowej klasy, a nie żadne importowanie przestrzeni.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Sieci komputerowe i Internet Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.14990 sekund, zapytan = 13
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |