CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - [BCB] Problem z wyświetlaniem obrazków w emailu

[BCB] Problem z wyświetlaniem obrazków w emailu

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

[BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Setesh » niedziela, 19 lutego 2012, 00:06

Witam.

Mam problem z wyświetlaniem obrazka w wysłanej wiadomości. A mianowicie wysyłam wiadomość typu text/html z załączonym plikiem graficznym. Chcę aby tem plik graficzny był od razu wyświetlony - niestety nie idzie po mej myśli.

Ktoś jest w stanie Mi napisać czego to wina? Czy kodu w C++ czy w HTML?

C++:
KOD cpp:     UKRYJ  
 if(OpenDialog1->Execute())
   {
    TIdAttachment *IdAtt = new TIdAttachment(lMessage->MessageParts, OpenDialog1->FileName);
    //wstawianie załącznika do wiadomości
    Edit8->Text = ExtractFileName(OpenDialog1->FileName);
   }

 TIdMessage *lMessage;
 TIdText *lTextPart;
 IdSMTP1->Port = 587;
 IdSMTP1->Host = Edit4->Text;
 IdSMTP1->Password = Edit6->Text; // pobiera hasło nadawcy wiadomości
 IdSMTP1->UserId = Edit7->Text; // pobiera nazwę nadawcy wiadomości - ID użytkownika
 IdSMTP1->AuthenticationType = atLogin; // wymagana autoryzacja

 lMessage = new TIdMessage(this);
 //lMessage-> Encoding = meMIME;
 lMessage->ContentType = "multipart/related";
 lMessage->From->Address = Edit2->Text;
 lMessage->Subject = "Give your subject";
 lMessage->Recipients->EMailAddresses  = Edit3->Text;

 lMessage->Priority = mpHigh; //mpHighest;
 lMessage->Body->Clear();

 // Use this part for users who don't use e-mailclients with html support
 lTextPart = new TIdText(lMessage->MessageParts, NULL);
 lTextPart->Body->Text = "Your content in plaintext";
 lTextPart->ContentType = "text/plain";

 // Your message using html
 lTextPart = new TIdText(lMessage->MessageParts, NULL);
 lTextPart->Body->Text = Memo1->Lines->Text;
 lTextPart->ContentType = "text/html";

 TIdAttachment *IdAtt = new TIdAttachment(lMessage->MessageParts, OpenDialog1->FileName);

 IdSMTP1->Connect();
 IdSMTP1->Send(lMessage);
 IdSMTP1->Disconnect();
 


HTML:
KOD html:     UKRYJ  
<html>
<head>
<title>Tytuł</title>
<head>
<body bgcolor="green">
<br><br><hr><br><br><center>TEXT<br><br><img
src="Komputerowiec.jpg"><br><br><hr></center>Tekst<br>
</body>
</html>
 


I nie wiem w czym leży problem :(
Avatar użytkownika
Setesh
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): sobota, 18 lutego 2012, 23:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Winzgroza 7 edycja Profesjonalnie wykańczająca użytkownika.
Kompilator: Borland® C++Builder® : 5,6, Turbo C++ Explorer.
Gadu Gadu: 2320016
    Windows 7Firefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Cyfrowy Baron » niedziela, 19 lutego 2012, 09:55

Gdy w programie Thinderbird 10.0 odbieram wiadomość wysłaną w HTML, która w załączniku ma obrazek to podglądając źródło wiadomości widzę, że obrazem jest wpisany w treść wiadomości:

Przykład załącznika w treści wiadomości:
KOD text:     UKRYJ  
This is a multi-part message in MIME format.
--------------090109080008030802030001
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Przykładowy tekst.



--------------090109080008030802030001
Content-Type: image/jpeg;
 name="aparat.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="aparat.jpg"

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABQODxIPDRQSEBIXFRQYHjIhHhwcHj0sLiQySUBM
S0dARkVQWnNiUFVtVkVGZIhlbXd7gYKBTmCNl4x9lnN+gXz/2wBDARUXFx4aHjshITt8U0ZT
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHz/wAAR
CAAyADIDASIAAhEBAxEB/8QAGwABAAMBAQEBAAAAAAAAAAAAAAMEBQYCAQf/xAAvEAACAgEC
BAIIBwAAAAAAAAABAgADBBESBRMhMRQyIkFRYXFzobEkNFKBgpHR/8QAFQEBAQAAAAAAAAAA
AAAAAAAAAAH/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAwDAQACEQMRAD8A7OJUs5trkDog
9jdTK9teWG1rZtunlMDTiYtuYcEL4rIdS/lXbr2klXEFsVHTMQhxqAwHUQNaJmtxHa20tWT8
D1nteIFuyKf5aQL8SGq1baksCn0lDf3ECGqzXUyQ2Ad5RR9j2J+ltJ6tfVl9zQIeMVYuWtNW
RTzbNx2AMRt9p1kHo461CqikcldqaoW2iSZN1GOLMrJJ2INui9ySewmfRxjh+ZYK+VZjknRb
N2o198ov05GNk2qt1FaWnsy+VpbempamZUC6CY9tTC8Vnzbxrp95pc4tiW7jqeo+kC/hfksf
5a/aJ9wh+Cx/lr9okFHKxcgZbtTVzK366hgNDISMlDo2Lb+w1m7EDms+l8zFag12I+4Om9CF
JHqJnPrwvKa8B6uSi92Y9AJ+izwK0B3BF19uktHM+PpWx7EYNa3RSx6KP9hMlGXlhwxPv7zp
GoqbzVI3xUTz4PF1B8PVqPXsEgYoK4tKkHUIo+kSeICIiAiIgIiICIiB/9k=
--------------090109080008030802030001--


Sprawdź źródło wiadomości wysłanej w Twoim programie, w innym (np. Thunderbird) programie pocztowym i sprawdź, czy zawiera ono w treści wiadomości obrazek. Jeżeli nie, to oznacza, że komponent INDY nie wpisuje obrazka w treść wiadomości i będziesz musiał zakodować by przed wysłaniem takiej wiadomości, program dodawał ten obrazek do treści.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Setesh » niedziela, 19 lutego 2012, 13:31

Ok... troche to potrwa bo zaktualizowałem Indy z wersji 8.x na 10.x... Środowisko nadal BCB 6.

Ma ktoś przykładowy kod jak wysyłać e-maila? Bo już się pogubiłem ze zmianami :(
Avatar użytkownika
Setesh
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): sobota, 18 lutego 2012, 23:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Winzgroza 7 edycja Profesjonalnie wykańczająca użytkownika.
Kompilator: Borland® C++Builder® : 5,6, Turbo C++ Explorer.
Gadu Gadu: 2320016
    Windows 7Firefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Setesh » niedziela, 19 lutego 2012, 15:28

Ok... Udało Mi się dojść do momentu gdzie wysyłam wiadomość z plikiem graficznym i co więcej jest on widoczny tak jak trzeba ale wyskakują Mi różne losowe błędy które nie wiem jak obsłużyć i co z nimi zrobić...

Błędy :
Kod: Zaznacz cały
Project Projekt1.exe raised exception class EIdSocketError with message 'Socket Error # 10053 Software caused connection abort.'
Project Projekt1.exe raised exception class EIdSocketError with message 'Socket Error # 10054 Connection reset by peer.'
Project Projekt1.exe raised exception class EIdSMTPReplyError with message 'Authentication failed.'
Project Projekt1.exe raised exception class EStringListError with message 'List index out of bounds (0).'


O ile autoryzacja w wersji 8.0 indy była prosta bo poprzez wybranie jednej opcji o tyle w wersji 10.x nie wiem co za to odpowiada... Jeżeli chodzi o błędy 10053 i 10054 to też nie kumam czemu ciągle wyskakują bo raz się pokazują a raz nie... masakra z tym...

Obecnie kod wygląda następująco :
KOD cpp:     UKRYJ  
    TIdText *Text;
    Text = new TIdText(IdMessage1->MessageParts, NULL);
    Text->ContentType = "multipart/alternative";
    Text->ParentPart = -1;

    TIdText *Plain;
    Plain = new TIdText(IdMessage1->MessageParts, NULL);
    Plain->Body->Text = "Twoja przeglądarka nie obsługuje HTML'a!";
    Plain->ContentType = "text/plain";
    Plain->ParentPart = 0;

    TIdText *Html;
    Html = new TIdText(IdMessage1->MessageParts, NULL);
    Html->Body->Text = Memo1->Lines->Text;
    Html->ContentType = "text/html";
    Html->ParentPart = 0;

 if(OpenDialog1->Execute())
   {
    TIdAttachmentFile *IdAtt = new TIdAttachmentFile(IdMessage1->MessageParts, OpenDialog1->FileName);
    IdAtt->ContentID   = "12345";
    IdAtt->ContentType = "image/jpeg";
    IdAtt->FileName    = ExtractFileName(OpenDialog1->FileName);
    Edit8->Text        = ExtractFileName(OpenDialog1->FileName);
   }

 if(IsEmailAddres(Edit2->Text) && IsEmailAddres(Edit3->Text))
   {
    IdMessage1->ContentType                = "multipart/related; type=\"multipart/alternative\"";
    IdMessage1->From->Name                 = Edit1->Text; //pobiera nazwę nadawcy wiadomości
    IdMessage1->From->Address              = Edit2->Text; //pobiera adres e-mail nadawcy wiadomości
    IdMessage1->Subject                    = Edit5->Text; // pobiera tytuł (temat) wiadomości
    IdMessage1->Recipients->EMailAddresses = Edit3->Text; // pobiera adres e-mail odbiorcy wiadomości
    IdMessage1->Priority                   = mpHigh; //mpHighest;

    IdSMTP1->Host      = Edit4->Text; // pobiera adres serwera SMTP
    IdSMTP1->Password  = Edit6->Text; // pobiera hasło nadawcy wiadomości
    IdSMTP1->Username  = Edit7->Text; // pobiera nazwę nadawcy wiadomości - ID użytkownika
    IdSMTP1->Port      = 587;

    IdSMTP1->Connect();
    try
      {
       Caption = "Wysyłam ?";
       IdSMTP1->Send(IdMessage1);
      }

    __finally
      {
       Caption = "Wysłane ???";
      }

    IdSMTP1->Disconnect(false);
   }else{
         ShowMessage("Adres e-mail jest zły!");
        };
 


Ktoś może pomóc z tym?
Avatar użytkownika
Setesh
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): sobota, 18 lutego 2012, 23:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Winzgroza 7 edycja Profesjonalnie wykańczająca użytkownika.
Kompilator: Borland® C++Builder® : 5,6, Turbo C++ Explorer.
Gadu Gadu: 2320016
    Windows 7Firefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Cyfrowy Baron » niedziela, 19 lutego 2012, 16:12

Jestem zaskoczony, że udało się Tobie zainstalować INDY 10 w środowisku C++Builder 6, gdyż ta wersja jest niekompatybilna z tym środowiskiem. Musisz zainstalować Update do tego środowiska, gdyż bez tego INDY nie będzie działać poprawnie. Nie pamiętam już ile tych poprawek było, ale są niezbędne do prawidłowego działania INDY.

Przykład wysyłania e-mail'a z załącznikiem znajdziesz w serwisie Cyfrowy Baron
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Setesh » niedziela, 19 lutego 2012, 17:41

Mam upd. 4 do bcb6 więc daje rade :)

Od dawna nie programowałem więc na nowszych wersjach (jak np TC++ Explorer) się gubię - a inne nie posiadam i nie wiem gdzie dostać.

A wracając do problemu... wyskakuje nadal tylko nie wiem czemu :(
A pierwsze przykłady wysyłania e-maila pochodzą właśnie z cyfrowego bo nie wiedziałem jak co ugryźć :)
Avatar użytkownika
Setesh
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): sobota, 18 lutego 2012, 23:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Winzgroza 7 edycja Profesjonalnie wykańczająca użytkownika.
Kompilator: Borland® C++Builder® : 5,6, Turbo C++ Explorer.
Gadu Gadu: 2320016
    Windows 7Firefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Setesh » niedziela, 19 lutego 2012, 18:41

Ok... po jakże do dokładnej obserwacji pod okiem najlepszego testera (czyli samego siebie ;) ) zauważyłem jeden szczególny przypadek kiedy to program wywala błędy... tylko i wyłącznie przy wysyłaniu emaila z załącznikiem.... To teraz pytam się (samego siebie?) : Gdzie tkwi błąd?? :roll:
Avatar użytkownika
Setesh
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): sobota, 18 lutego 2012, 23:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Winzgroza 7 edycja Profesjonalnie wykańczająca użytkownika.
Kompilator: Borland® C++Builder® : 5,6, Turbo C++ Explorer.
Gadu Gadu: 2320016
    Windows 7Firefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Cyfrowy Baron » poniedziałek, 20 lutego 2012, 09:48

KOD cpp:     UKRYJ  
    IdAtt->ContentID   = "12345";
    IdAtt->ContentType = "image/jpeg";
    IdAtt->FileName    = ExtractFileName(OpenDialog1->FileName);


ContentID daruj sobie jest opcjonalne i chyba nie jest to dowolny ciąg znaków jak u Ciebie.
FileName musi zawierać ścieżkę dostępu do pliku, a nie tylko nazwę pliku jak u Ciebie, czyli:

KOD cpp:     UKRYJ  
IdAtt->FileName    = OpenDialog1->FileName;


pomoc c++builder napisał(a):FileName indicates the local file name where the contents for the message part can be located.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Setesh » poniedziałek, 20 lutego 2012, 10:20

No niestety ale ContentID wykorzystuję bo ma być wyświetlany obrazek w emailu a nie znam innego sposobu na to niż poprzez CID.

Co do nazwy pliku poprawię wieczorkiem :)
Avatar użytkownika
Setesh
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): sobota, 18 lutego 2012, 23:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Winzgroza 7 edycja Profesjonalnie wykańczająca użytkownika.
Kompilator: Borland® C++Builder® : 5,6, Turbo C++ Explorer.
Gadu Gadu: 2320016
    Windows 7Firefox

Re: [BCB] Problem z wyświetlaniem obrazków w emailu

Nowy postprzez Cyfrowy Baron » poniedziałek, 20 lutego 2012, 11:41

Z tego co widzę w źródłach wiadomości nie ma wartości ContentID a mimo to obrazki są wyświetlane w źródle wiadomości:

KOD text:     UKRYJ  
Content-Type: image/jpeg;
 name="1-vista.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="1-vista.jpg"

/* tutaj ciąg znaków reprezentujących obrazek */

Content-Type: image/png;
 name="9tzqfl.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="9tzqfl.png"

/* tutaj ciąg znaków reprezentujących obrazek */


Ze źródła wiadomości wynika, że FileName to jednak nazwa pliku, a nie cała ścieżka dostępu.
To może być jednak bug środowiska, gdyż problem z wysyłaniem e-maila z załącznikiem w C++Builder 6 był już poruszany na tym forum.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 7 gości

cron