CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - [bcb 6]Wysyłanie maila za pomocą ShellExecute

[bcb 6]Wysyłanie maila za pomocą ShellExecute

dział ogólny

[bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez sokolsok » piątek, 19 października 2012, 01:39

Witam, to mój pierwszy post więc się przedstawię.. nazywam się Sebastian;)

Mam pytanie do osób bardziej obeznanych ode mnie. W jaki sposób do f-cji ShellExecute wstawić jakąś zmienną. Mówimy oczywiście o c++ builderze. Otóż używam tej f-cji do otworzenia outloocka ale chciałbym, żeby treścią maila był Label->Caption (ewentualnie Memo->Lines jeśli nie da rady Labela użyć). W domyśle wygląda to następująco: ShellExecute(Handle, "open", "mailto:mail1?cc=mail2&subject=temat&body=treść, NULL, NULL, SW_SHOWNORMAL); cokolwiek bym nie napisał w miejscu gdzie jest "treść" wostaje to wpisane jako tresc w outloocku.. a przecież nie o to chodzi.. Wie ktoś jak powinno to wyglądać? Z góry dzięki:)
Avatar użytkownika
sokolsok
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): czwartek, 18 października 2012, 14:47
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: win 7
Kompilator: bcb 6
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Corvis » piątek, 19 października 2012, 08:42

Kolego musisz to zrobić po przez funkcję np. Format

KOD cpp:     UKRYJ  
String FormatowanaTresc = Format("mailto:mail1?cc=mail2&subject=temat&body=%s", OPENARRAY(TVarRec,(Label1->Caption)));
ShellExecute(Handle, L"open", FormatowanaTresc.w_str(), NULL, NULL, SW_SHOWNORMAL);
 


Jeżeli używasz BCB 6 to z tego co pamiętam to zamiast w_str() będziesz musiał użyć c_str(), ze względu na brak obsługi UNICODu w BCB6
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Mironas » piątek, 19 października 2012, 08:59

Dla BCB6 (a taki posiada sokolsok) będzie to po drobnej korekcie:
KOD cpp:     UKRYJ  
String FormatowanaTresc = Format("mailto:mail1?cc=mail2&subject=temat&body=%s", OPENARRAY(TVarRec,(Label1->Caption)));
ShellExecute(Handle, "open", FormatowanaTresc.c_str(), NULL, NULL, SW_SHOWNORMAL);
 


Przy okazji:
W programie pocztowym mam ustawione automatyczne wstawianie sygnatury (pozdrawiam, podpis). Po użyciu tej metody w treści maila mam najpierw sygnaturę a dopiero poniżej treść z FormatowanaTresc. Jak można to odwrócić?
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Corvis » piątek, 19 października 2012, 09:05

Mironas,

Ja też mam sygnaturę i u mnie jest wszystko OK. Używam Thunderbirda.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Mironas » piątek, 19 października 2012, 10:18

Corvis napisał(a):Ja też mam sygnaturę i u mnie jest wszystko OK. Używam Thunderbirda.

Też używam Thunderbirda. Może to kwestia ustawień w programie pocztowym:
Obrazek
Ale to już nie kwestia programowania a więc nie to forum.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Cyfrowy Baron » piątek, 19 października 2012, 10:42

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 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Mironas » piątek, 19 października 2012, 10:52

Cyfrowy Baron napisał(a):Zapoznałeś się z tą poradą: Wysyłanie e-mail'a z plikiem załącznika za pomocą MAPI.

Tak, używałem już kiedyś tego.
Moje pytanie dotyczyło konkretnie użycia ShellExecute bo wstawiłem do BCB6 przykład Corvis'a i nieładnie poskładało mi treść maila z sygnaturą. Ale nie jest to dla mnie problem. Dzięki za zainteresowanie.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Cyfrowy Baron » piątek, 19 października 2012, 11:12

Musisz wiedzieć, że w BCB6 możesz wysłać w ten sposób tylko tekst kodowany a ANSI.
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 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez sokolsok » piątek, 19 października 2012, 20:18

Dzięki za odpowiedź. Właśnie o to chodziło. To jeszcze w temacie: w jaki sposób mam wstawić "enter"? W labelu jak wstawiam "\n" to działa elegancko i mam linia po linii, natomiast w outloocku już wszystko wyświetla mi w jednej linii.
Avatar użytkownika
sokolsok
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): czwartek, 18 października 2012, 14:47
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: win 7
Kompilator: bcb 6
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Corvis » piątek, 19 października 2012, 20:44

KOD cpp:     UKRYJ  
String TekstMaila = "Tekst maila %0D%0A Nowa linia tekstu";
String FormatowanaTresc = Format("mailto:mail1?cc=mail2&subject=temat&body=%s", OPENARRAY(TVarRec,(TekstMaila)));
ShellExecute(Handle, "open", FormatowanaTresc.c_str(), NULL, NULL, SW_SHOWNORMAL);
 


'%0D%0A' <- to jest znak nowej linii działający dla tej funkcji
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez polymorphism » piątek, 19 października 2012, 21:49

'%0D%0A' <- to jest znak nowej linii działający dla tej funkcji

To jest tak zwane kodowanie URL. Było parę wątków na ten temat.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez sokolsok » sobota, 20 października 2012, 22:24

Dzięki wielkie Wam - działa jak marzenie:)

Ostatnie pytanie (mam nadzieję).. w jaki sposób dodać kilka argumentów do funkcji Format? W "c" robiło się to jakoś tak, ale tu nie działa to.. Jak podejrzewam to jakaś pierdoła mała jest, ale nie mogę dojść do tego..

Kod: Zaznacz cały
String FormatowanaTresc = Format("mailto:mail1?cc=mail2&subject=%s&body=%s",OPENARRAY(TVarRec,(temat->Caption)), OPENARRAY(TVarRec,(mail->Caption)));
Avatar użytkownika
sokolsok
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): czwartek, 18 października 2012, 14:47
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: win 7
Kompilator: bcb 6
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Corvis » poniedziałek, 22 października 2012, 08:52

KOD cpp:     UKRYJ  
String FormatowanaTresc = Format("mailto:mail1?cc=mail2&subject=temat&body=%s", OPENARRAY(TVarRec,(Label1->Caption,kolejna_1,kolejna_2,kolejna_3)));
 
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: [bcb 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Cyfrowy Baron » poniedziałek, 22 października 2012, 15:21

Corvis podał w kodzie trochę za mało %s gdyż musi ich być tyle ile elementów dodajesz:

KOD cpp:     UKRYJ  
String FormatowanaTresc = Format("mailto:mail1?cc=mail2&subject=temat&body=%s%s%s%s", OPENARRAY(TVarRec,(Label1->Caption, kolejna_1, kolejna_2, kolejna_3)));
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 6]Wysyłanie maila za pomocą ShellExecute

Nowy postprzez Corvis » poniedziałek, 22 października 2012, 15:46

Pytanie było inne ;) No ale racja mogłem dopisać żeby nie było kolejnych :-)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

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

cron