Wysyłanie e-mail'a z plikiem załącznika

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

Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 10:15

Witam
Pisze program i musze w nim zamiescic funkcje wysylania e-maila z plikiem zalacznika poprzez klikniecie na przycisk w moim programie. Najbardziej odpowiadalaby mi funkcja ShellExecute, jednak nie moge znalezc w niej miejsca na podanie informacji o dolaczeniu pliku, poniewaz projekt mial byc 'na wczoraj' nie poswiecilam wiele czasu na zglebianie tematu i postanowilam wykorzystac kod z uzyciem biblioteki <mapi.h>. TEORETYCZNIE wszystko dziala, program nie zglasza bledu, pyta o pozwolenie na wyslanie maila itp., jednak wiadomosc nie dociera do odbiorcy. :| Adres napewno podalam dokladnie, sprawdzilam na kilku innych - nie dziala :(
Kod z jakiedo korzystalam wziety byl ze strony Cyfrowego Barona;
1. PORADA: Wysyłanie e-mail'a z plikiem załącznika za pomocą mapi.
2: PORADA: Uruchamianie domyślnego programu pocztowego z parametrami.
Nie chce korzystac z komponentow Indy, bo tam trzeba podawac pelna konfiguracje skrzynki ladcznie z haslami itp. a ja nie bede znala tych detali. Bardzo prosze o jakie rady
Bylabym bardzo wdzieczna za kazda pomoc.
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez Cyfrowy Baron » piÄ…tek, 26 wrzeÅ›nia 2008, 11:55

Jeżeli nie chcesz korzystać z MAPi, ani też z bibliotek INDY, to za pomocą funkcji ShellExecute ani żadnej innej korzystającej z powłoki (Shell) systemowej tego nie załatwisz. Korzystasz prawdopodobnie ze środowiska Borland C++ Builder 6 Personal, a tam nie ma bibliotek, które w prosty sposób umożliwiały by obsługę protokołu SMTP. Możesz oczywiście poszukać w sieci jakichś innych bibliotek do obsługi tego protokołu, ale nie znajdziesz nic prostszego od INDY. W komercyjnych środowiskach C++ Builder występują biblioteki do obsługi protokołu SMTP, ale korzystanie z nich jest bardziej skomplikowane niż z INDY, poza tym podam ci jako ciekawostkę, że wszystkie nowe komercyjne wersje środowiska programowania firmy Borland dla C++ i Delphi zawierają standardowo pakiet INDY v9 dla C++ Builder i INDY v10 dla Delphi, jak więc widzisz firma Borland wręcz zachęca do korzystania z tych bibliotek.

Nie chce korzystac z komponentow Indy, bo tam trzeba podawac pelna konfiguracje skrzynki ladcznie z haslami itp. a ja nie bede znala tych detali. Bardzo prosze o jakie rady


A jak chcesz wysłać e-mail nie znając hasła do konta i nie znając jego konfiguracji?! MAPI wymaga skonfigurowania Outlooka gdyż korzysta z jego bibliotek, czyli w Outlooku musisz też podać pełną konfigurację skrzynki łącznie z hasłem dostępu. Sprawę dodatkowo komplikuje fakt, że dzisiaj wszystkie serwery wymagają uwierzytelnienia. Jak Ty to sobie wogóle wyobrażasz, przecież poczta e-mail nie działa na zasadzie sieci P2P, lecz wszystkie wiadomości przechodzą przez serwer, więc żeby cokolwiek wysłać przez e-mail musisz uzyskać dostęp do serwera SMTP, chyba że założysz sobie własny serwer i tak go skonfigurujesz, żeby nie wymagał podawania hasła ani uwierzytelnienia, ale dane konfiguracyjne i tak musisz podać.

Co do MAPI to fakt nie byłem zbyt dokładny w opisie porady Wysyłanie e-mail'a z plikiem załącznika za pomocą MAPI., gdyż nie podałem informacji, że wymaga to prawidłowo skonfigurowanego Outlooka, poza tym poradę pisałem dla Outlook Express w wersji 6, a w nowszych wersjach Microsoft wprowadził już zmiany w bibliotece MAPI więc porada właściwie się zdezaktualizowała. Nie zajmuję się już problemem MAPI, gdyż nie korzystam z Outlooka, a sama metoda wysyłania e-mail przez MAPI jest mało efektywna, ale jeżeli ktoś wie jak to robić w nowych wersjach MAPI to oczywiście chętnie się z tym zapoznam.
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
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 12:08

Korzystam ze srodowiska CodeGear C++ Builder 2007 i mam wbudowany pakiet Indy. Co do MAPI to bardzo bym chciala uzyc tej funkcji, jest wszystkim tym, czego potrzebuje, tylko ona nie dziala. Dochodzi do momentu wyswietlenia komunikatu o tym, ze inny program usiluje wyslac mail i czy sie zgadzam, klikam 'yes' i na tym sie konczy. Mail nie dociera do odbiorcy - ja nie otrzymuje zadnego komunikatu o bledzie :| . Co do indy to tez nie mam nic przeciwko, nie znam sie na aplikacjach sieciowych, to pierwszy moj program ktory wykorzystuje takie techniki, ale kiedy staralam sie wyslac maila za ich pomoca musialam podac serwer SMTP oraz haslo do poczty. Problem jest tego tyu, ze moja aplikacja bedzie uzywana w biurze przez wielu uzytkownikow w obrebie jednej sieci lokalnej, ktorzy maja poczte skonfigurowana w Ms Outlook i idealem byloby uzywanie tego wlasnie programu. Nie moge prosic wszystkich uzytkownikow o podawanie hasla do skrzynki i wszystkich parametrow, badz wymagac od nich samodzielnego skonfigurowania (bo jak to standardowy uzytkownik nie bedzie wiedzial jak, bedzie narzekal, ze program trudny itd.) wolalabym zrobic to bardziej anonimowo i uzywajac jak najmniej ingerencji z ich strony. Po prostu generuje jakis dokument, klina 'wyslij' otwiera mu sie komunikat, ze wiadomosc zostala wyslana.
Dziekuje bardzo za odpowiedz.
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 12:14

Co do skonfigurowania outlooka to dla mnie to rzecz oczywista. Wiem, ze konfiguracja jest niezbedna i wiem, kazdy uzytkownik ma juz poczte skonfigurowana w swoim systemie. Dlatego ja nie chcialabym powtarzac tego w swoim programie i konstruowac kolejnego 'mini-klienta' poczty, ale uzywac istniejacego. moze nie wyrazilam sie dokladnie wczesniej. Mam podstawowa wiedze na temat dzialania poczty e-mail, korzystajac z ShellExecute wszystko dziala idealnie, tylko nie moge dolaczyc pliku, co jest niezbedne w programie. Moze faktycznie MAPI dziala inaczej w MS Outlook. Postaram sie w z tym powalczyc. - bez tego nie skoncze projektu.
Pozdrawiam.
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez Cyfrowy Baron » piÄ…tek, 26 wrzeÅ›nia 2008, 12:17

Problem jest tego tyu, ze moja aplikacja bedzie uzywana w biurze przez wielu uzytkownikow w obrebie jednej sieci lokalnej, ktorzy maja poczte skonfigurowana w Ms Outlook i idealem byloby uzywanie tego wlasnie programu. Nie moge prosic wszystkich uzytkownikow o podawanie hasla do skrzynki i wszystkich parametrow, badz wymagac od nich samodzielnego skonfigurowania


Jak juz napisałem wcześniej (nie czytasz uważnie), MAPI to biblioteka klienta pocztowego Outlook Express, a to oznacza, że aby wysłać jakikolwiek e-mail przez MAPI trzeba mieć prawidłowo skonfigurowany program Outlook Express wraz z hasłami i tym wszystkim co jest potrzebne do wysyłania e-maila.

W Twoim przypadku idealnym rozwiązaniem jest INDY, gdyż możesz w programie zdefiniować hasła i całą konfigurację, tak by użytkownik nie musiał niczego podawać. Przecież program sam może sobie podać hasło i wszystko co jest mu potrzebne do wysłania e-maila, nie musi o nic pytać użytkownika. Konfigurację skrzynki e-mail możesz umieścić w pliku *.INI i program po uruchomieniu będzie sobie pobierał konfigurację właśnie z tego pliku i nie będzie musiał o nic pytać użytkownika. Jeżeli zajdzie konieczność zmiany konfiguracji skrzynki to wystarczy wtedy tylko zmienić dane w pliku konfiguracyjnym.

Zauważ że programy do obsługi poczty nie muszą pytać zawsze o podanie hasła czy też konfigurację, gdyż raz podajesz program to sobie zapisuje w pliku i po każdym uruchomieniu sam się konfiguruje zgodnie z danymi z pliku, tak działają programy pocztowe.
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
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 12:40

Rozumiem, MAPI to biblioteka klienta pocztowego Outlook Express, a nie Microsoft Outlook, wiec nie bedzie dzialac, zmyli mnie fakt, ze po wywolaniu funcji otworzylo sie okno komunikatu programu Microsoft Outlook ale to zapewne dlatego, ze jest to klient domyslny i chcial blokowac przeslanie maila przez Outlook Express. W poradzie równiez nie bylo sprecyzowane czy MAPI dziala z MS outlook, czy Outlook Express. Ale rozumiem zasiegnac wiecej informacji zamiast klepac kod. Bede musiala wobec tego uzyc Indy. Wiem, ze parametry moge skonfigurowac gdziekolwiek, ja osobiscie preferuje rejestr Windows, gdyz jest bezpieczniejszy i bardziej prywatny niz plik ini, ale to rzecz gustu. Jednakze aby przechowac haslo gdziekolwiek musze o nie spytac, badz poprosic uzytkownika o wpisanie. Jestem w stanie podac wszystkie parametry jak SPTP czy POP3 jednak adres nadawcy czy haslo to juz sprawa indywidualna i bedzie musiala byc konfigurowana odrebnie dla kazdego uzytkownika. Ale trudno, jak trzeba to trzeba. Dodatkowa wada jest brak kopii wyslanego emaila, ktora znajduje sie w kliencie pocztowym jako 'wyslane', ale jakos sobie poradza bez tego. Nie o to chodzi, ze jest mi ciezko skonfigurowac cokolwiek, firma dla ktorej pisze program jest uczulona na punkcie prywatnosi, poufnosci dokumentow, ochrony danych osobowych i pewnie niezbyt chetnie podawaliby hasla do swoich skrzynek e-,mail, oni sami pewnie tez nie beda wiedzieli jak to sie robi, bo nauczeni sa do tego, ze program ma robic sam wszystko po kliknieciu na odpowiedni przycisk wiec poprosza mnie o pomoc i ... ale jak juz pisalam - jesli nie mozna inaczej. Szkoda, ze nie mozna do tego uzyc ShellExecute, wezme sie za Indy w takim razie.
Dziekuje za odpowiedz.
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 13:19

TAK CZY INACZEJ
Wstawilam Indy, wszystko ok, przyznam sie szczerze skopiowalam kod z porady o wysylaniu maila za pomoca Indy, po dodaniu:
TIdAttachment *IdAtt = new TIdAttachment(IdMessage1->MessageParts, "C:\\Test.xls"); kompilator zwrocil 2 bledy:
1) frmDocBldr.cpp(785,84): Error error 2352: E2352 Cannot create instance of abstract class 'TIdAttachment'
2) frmDocBldr.cpp(785,84): Error error 2353: E2353 Class 'TIdAttachment' is abstract because of '_fastcall TIdAttachment::OpenLoadStream() = 0'

:?: :?: :?: :|
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez wargo » piÄ…tek, 26 wrzeÅ›nia 2008, 13:23

Najlepszy pomysł to zrobić okienko do podania hasła za każdym razem.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 13:27

tak tez chyba zrobie :) ewentualnie za pierwszym razem a potem bedzie sobie juz pamietal np. w rejestrze :) Martwi mnie tylko to sypanie sie kodu przy dolaczaniu pliku. To chyba jakas klatwa wisi nad tym projektem :? póki co - walcze :)
dzieki :)
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez Cyfrowy Baron » piÄ…tek, 26 wrzeÅ›nia 2008, 14:05

Napisałeś, że korzystasz ze środowiska CodeGear C++ Builder 2007, ja poradę pisłem dl C++ Builder 6 i INDY w wersji 9, jeżeli używasz indy w innej wersji to niestety musisz zapoznać się ze zmianami w tej wersji w stosunku do wersji 9. Z tego co mi wiadomo dla C++ Builder INDY występuje tylko w wersji 9, gdyż wersja 10 jest już przewidziana dla Delphi i z C++ Builder nie współpracuje. Jeżeli tak jest to korzystasz z INDY 9.
Sprawdź w plikach pomocy jak należy używać klasy TIdAttachment
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
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez Witold » piÄ…tek, 26 wrzeÅ›nia 2008, 15:32

techew napisał(a):TAK CZY INACZEJ
Wstawilam Indy, wszystko ok, przyznam sie szczerze skopiowalam kod z porady o wysylaniu maila za pomoca Indy, po dodaniu:
TIdAttachment *IdAtt = new TIdAttachment(IdMessage1->MessageParts, "C:\\Test.xls"); kompilator zwrocil 2 bledy:
1) frmDocBldr.cpp(785,84): Error error 2352: E2352 Cannot create instance of abstract class 'TIdAttachment'
2) frmDocBldr.cpp(785,84): Error error 2353: E2353 Class 'TIdAttachment' is abstract because of '_fastcall TIdAttachment::OpenLoadStream() = 0'

:?: :?: :?: :|



Spróbuj może:
Kod: Zaznacz cały
#include <IdAttachmentFile.hpp>
//…
TIdAttachmentFile *IdAtt = new TIdAttachmentFile(IdMessage1->MessageParts, "c:\\cdcops.log");
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Wysyłanie e-mail'a z plikiem załącznika

Nowy postprzez techew » piÄ…tek, 26 wrzeÅ›nia 2008, 15:54

DZIALA :))
WIELKIE DZIEKI :)) ;)
Avatar użytkownika
techew
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): piątek, 26 września 2008, 10:07
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana


  • 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 2 gości

cron