 |
Coders' city Nasza pasja to programowanie!
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Pon Gru 08, 2014 1:11 pm OP Temat postu: Redagowanie tre?ci maila - jak to robi?? |
|
|
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 |
|
 |
|
rzezuch
Dołączył: 18 Lis 2011 Posty: 79 Skąd: znienacka
|
Wysłany: Wto Gru 09, 2014 12:00 pm Temat postu: |
|
|
znacznik <br> zamiast VBNewLine. Przecie? tre?? wiadomo?ci jest html-em :)
|
|
Powrót do góry |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
|
Powrót do góry |
|
 |
Sinus32
Dołączył: 20 Sty 2007 Posty: 910
|
Wysłany: Wto Gru 09, 2014 8:52 pm Temat postu: |
|
|
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 |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Wto Gru 09, 2014 9:30 pm OP Temat postu: |
|
|
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 |
|
 |
Sinus32
Dołączył: 20 Sty 2007 Posty: 910
|
Wysłany: Wto Gru 09, 2014 11:13 pm Temat postu: |
|
|
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 |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Wto Gru 09, 2014 11:21 pm OP Temat postu: |
|
|
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 |
|
 |
Sinus32
Dołączył: 20 Sty 2007 Posty: 910
|
Wysłany: Wto Gru 09, 2014 11:26 pm Temat postu: |
|
|
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 |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Wto Gru 30, 2014 7:47 pm OP Temat postu: |
|
|
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 |
|
 |
JohnB
Dołączył: 07 Mar 2008 Posty: 793
|
Wysłany: Wto Gru 30, 2014 8:13 pm Temat postu: |
|
|
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 |
|
 |
|
|
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.05119 sekund, zapytan = 13
|