Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Poslati E-mail sa attachment-om???

[es] :: Pascal / Delphi / Kylix :: Poslati E-mail sa attachment-om???

[ Pregleda: 5563 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

iggac
Igor Ceko

Član broj: 34086
Poruke: 67
*.dialup.blic.net.



Profil

icon Poslati E-mail sa attachment-om???21.04.2005. u 23:23 - pre 231 meseci
Moze li mi iko objasniti kako da iz aplikacije u Delphi-ju posaljem e-mail sa attachment-om.Pronasao sam nesto pretrazujuci ovaj forum i nije mi bas proradilo kako treba,a posto mi je hitno (iskrslo je u zadnji cas) nemam bas nesto puno vremena da citam neke tutorijale o tome. Ako moze iko da post-uje i neki primjer aplikacije koja to radi.
Radi informacije koristim Outlook 2003 kao default mail client.

Hvala unapred
The truth shall set you free
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Poslati E-mail sa attachment-om???22.04.2005. u 00:09 - pre 231 meseci
Uz attachment imash SMTP engine. Engine ne koristi nikakav unapred definisani SMTP server vec se konektuje direktno na smtp server primaoca. Primer kako se inicijalizuje i salje mail :

Code:

var
  SMTP  : TSMTPEngine;
begin
  SMTP := TSMTPEngine.Create;
  With SMTP Do
  Begin
    From := tSender;
    Recip := tRecip;
    Subject := tSubject;
    Body := tBody;
    Attachment := tAttach;
  End;
  SMTP.SendEmail;
  SMTP.Free;
Prikačeni fajlovi
 
Odgovor na temu

iggac
Igor Ceko

Član broj: 34086
Poruke: 67
*.dialup.blic.net.



Profil

icon Re: Poslati E-mail sa attachment-om???22.04.2005. u 01:06 - pre 231 meseci
@reiser

Hvala ti jos jednom izvukao si me iz nemoguce pozicije
The truth shall set you free
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Poslati E-mail sa attachment-om???22.04.2005. u 01:43 - pre 231 meseci
np ;)
 
Odgovor na temu

Dementia
Nemanja Filipovic

Član broj: 140639
Poruke: 22
*.sbb.rs.



+1 Profil

icon Re: Poslati E-mail sa attachment-om???10.02.2009. u 23:48 - pre 185 meseci
Izvinjavam se sto otvaram staru temu, ali u ocaju sam ne znam kako da resim ovo...

guglam a ne znam ni sta da trazim :)

Code:

var
  SMTP  : TSMTPEngine;
begin
  SMTP := TSMTPEngine.Create;
  With SMTP Do
  Begin
    From := tSender;
    Recip := tRecip;
    Subject := tSubject;
    Body := tBody;
    Attachment := tAttach;
  End;
  SMTP.SendEmail;
  SMTP.Free;


Attachment := tAttach;

kao attach, stavim 'test.txt', ali kada primim mail, dobijem u polju za atachment test.swf..
a npr nemogu ni zipovan fajl da saljem... treba nekako da enkodujem valjda ovo?
ali kako to da uradim? probao sam vise primera i nije mi uspelo...
kao body ide neki html kod... onda neki... ContentType.. :)
Jel mora sve ovo da se radi da bih poslao atachment ili sam ja malo otisao off...

kako da resim ovo?

Hvala!
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Poslati E-mail sa attachment-om???11.02.2009. u 08:21 - pre 185 meseci
Koristi neke od poznatih socket biblioteka, Indy, ICS ili Synapse, uz svaku dolaze odgovarajući primeri. Indy se i isporučuje uz Delphi još od verzije 6 i verovatno ga imaš, njegove demoe možeš naći u okviru Demos dira tvoje Delphi instalacije. Ako se odlučiš za Indy 10 neke od demoa možeš naći na: http://www.indyproject.org/Sockets/Demos/index.EN.aspx. Takođe možeš pogledati i http://delphi.about.com/od/indy/a/email-send-indy.htm.


 
Odgovor na temu

Mythbuster
Darko Stojkovic
student
Beograd

Član broj: 204745
Poruke: 35
93.86.204.*



Profil

icon Re: Poslati E-mail sa attachment-om???13.02.2009. u 20:29 - pre 184 meseci
I meni je neprijatno shto nachinjem staru temu, ali je tema bash vezana za moje pitanje...
Prijavljuje mi Undeclared Identifier : 'TSMTPEngine", pa me zanima kako da je definisem....
Mythbuster
 
Odgovor na temu

Bagwell

Član broj: 169485
Poruke: 23
*.sbb.rs.



Profil

icon Re: Poslati E-mail sa attachment-om???14.02.2009. u 03:57 - pre 184 meseci
Ako si skinuo ovaj primer SMTP Engine 0.97, onda treba da radi ok, osim ako slucajno nisi mozda izbacio iz
USES liste Email in 'Email.pas'; pa ti zato prijavljuje nedeklarisan TSMTPEngine.
 
Odgovor na temu

Mythbuster
Darko Stojkovic
student
Beograd

Član broj: 204745
Poruke: 35
77.46.165.*



Profil

icon Re: Poslati E-mail sa attachment-om???14.02.2009. u 13:48 - pre 184 meseci
ovaj primer smtp engina koji je okachen prijavljuje virus (trojanskog konja, ili crva, ne mogu da se setim..), a i kako treba da deklarisem u uses listi to...
Mythbuster
 
Odgovor na temu

Bagwell

Član broj: 169485
Poruke: 23
*.sbb.rs.



Profil

icon Re: Poslati E-mail sa attachment-om???14.02.2009. u 15:09 - pre 184 meseci
Kao sto i sam mozes da vidis ovo je obican smtp engine za slanje maila. Znaci av je dao false uzbunu, mozes slobodno da ignorises to.

Code:

PROGRAM SMTP_Engine;

USES
  Email in 'Email.pas';

var
  SMTP  : TSMTPEngine;
begin
  SMTP := TSMTPEngine.Create;

itd...

Posto je sve vec deklarisano i ti nista nisi izbacio iz uses liste, ja ti onda ne mogu pomoci ovako na slepo, jer nema nikakve logike da ti tako nesto prijavljuje.
Javice ti se neko ko se bolje razume pa ce ti odgovoriti :)
 
Odgovor na temu

Mythbuster
Darko Stojkovic
student
Beograd

Član broj: 204745
Poruke: 35
79.101.71.*



Profil

icon Re: Poslati E-mail sa attachment-om???28.02.2009. u 17:39 - pre 184 meseci
Prijavljuje mi " [Fatal Error] Unit2.pas(7): File not found: 'Email.dcu' ", pa ne znam sta da radim...
Mythbuster
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
95.176.176.*



+14 Profil

icon Re: Poslati E-mail sa attachment-om???01.03.2009. u 17:35 - pre 184 meseci
Iako je covek izgleda resio problem sa SMTP engine-om, mozda treba jos nesto napisati zbog ostalih kojima ce mozda zatrebati.

SMTP engine izgleda direktno kontaktira SMTP server preko porta 25, sto i nije bas dobra ideja. Zbog ogromnog broja raznih spammera i trojanskih konja svaka ozbiljnija firma ima port 25 ili skroz zatvoren ili otvoren samo za unutrasnji mail server. Cak ni koriscenje porta 587 ne resava problem, jer je i on obicno zakljucan za koriscenje od strane samo fiksnog mail servera. Cak iako je port 25 otvoren za slanje velika je verovatnoca zbog sve veceg spam problema da ce vasa posta zavrsiti kao junk mail na strani onoga sto prima postu.

Resenje je koriscenje MAPI protokola koji salje postu preko unapred definisanog i poznatog SMTP servera (lokalni exchange ili drugi smtp server), i koji je verovatno poznat i serveru primaoca poruke. Konfiguracija MAPI-ja (server, username, password...) se vrsi iz control panela u windows-u, ali ako imate outlook koji radi onda je MAPI vec podesen.

Kod koji salje postu sa attachmentom preko mapija (potrebno je dodati MAPI u USES clause):

Code:


function SendMail(RecipientEMail: String; RecipientName: String = ''; Subject: String = ''; 
  Body: String = ''; FileName: String = ''; SenderName: String = ''; 
  SenderEMail: String = ''): Integer;
var
  Msg: TMapiMessage;
  Sender, Recipient: TMapiRecipDesc;
  FileAttachment: TMapiFileDesc;

  SendMailFunc: TFNMapiSendMail;
  MAPIModule: HModule;
begin
  FillChar(Msg, SizeOf(Msg), 0);
  with Msg do
  begin
    if Subject <> '' then
      lpszSubject := PChar(Subject);

    if Body <> '' then
      lpszNoteText := PChar(Body);

    if (SenderEmail <> '') then
    begin
      Sender.ulRecipClass := MAPI_ORIG;
      if (SenderName = '') then
        Sender.lpszName := PChar(SenderEMail)
      else
        Sender.lpszName := PChar(SenderName);
      Sender.lpszAddress := PChar(SenderEmail);
      Sender.ulReserved := 0;
      Sender.ulEIDSize := 0;
      Sender.lpEntryID := nil;
      lpOriginator := @Sender;
    end;

    if (RecipientEmail <> '') then
    begin
      Recipient.ulRecipClass := MAPI_TO;
      if (RecipientName = '') then
        Recipient.lpszName := PChar(RecipientEMail)
      else
        Recipient.lpszName := PChar(RecipientName);
      Recipient.lpszAddress := PChar(RecipientEmail);
      Recipient.lpszAddress := PChar('');
      Recipient.ulReserved := 0;
      Recipient.ulEIDSize := 0;
      Recipient.lpEntryID := nil;
      nRecipCount := 1;
      lpRecips := @Recipient;
    end
    else
      lpRecips := nil;

    if FileName = '' then
    begin
      nFileCount := 0;
      lpFiles := nil;
    end
    else
    begin
      FillChar(FileAttachment, SizeOf(FileAttachment), 0);
      FileAttachment.nPosition := Cardinal($FFFFFFFF);
      FileAttachment.lpszPathName := PChar(FileName);

      nFileCount := 1;
      lpFiles := @FileAttachment;
    end;
  end;

  MAPIModule := LoadLibrary(PChar(MAPIDLL));
  if MAPIModule = 0 then
    Result := -1
  else
    try
      @SendMailFunc := GetProcAddress(MAPIModule, 'MAPISendMail');
      if @SendMailFunc <> nil then
        Result := SendMailFunc(0, Application.Handle, Msg, MAPI_DIALOG or MAPI_LOGON_UI, 0)
      else
        Result := 1;
    finally
      FreeLibrary(MAPIModule);
    end;
end;


if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

Mythbuster
Darko Stojkovic
student
Beograd

Član broj: 204745
Poruke: 35
79.101.89.*



Profil

icon Re: Poslati E-mail sa attachment-om???14.03.2009. u 21:44 - pre 184 meseci
Evo, sta mi je konkretno potrebno za moj program-da imam pocetnu formu iz koje ulazim u drugu i zatim iz druge saljem taj e-mail...
Kada sam postupio po Borisovim uputstvima prijavljuje mi gresku " [Error] Unit2.pas(126): Statement expected but 'FUNCTION' found ", pa nisam siguran da lui sam na dobro mesto prekopirao kod (tacnije sve sam prekopirao na mesto za programiranje samog dugmeta za slanje )...
Mythbuster
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.dial-up.dsl.siol.net.



+14 Profil

icon Re: Poslati E-mail sa attachment-om???15.03.2009. u 11:39 - pre 183 meseci
Prvo dodaj MAPI u uses stavku, skroz na vrhu unita od forme 2, znaci tamo gde je uses Forms, Classes, ... dodaj jos MAPI. Zatim iskopiraj kod iznad hendlera za buttonclick, znaci:

Code:

//iskopiraj ovde!

procedure TForm2.Button1Click(Sender: TObject);
begin
  //a ne ovde!
  
  //Ovde treba samo da pise
  SendMail('[email protected]', 'Mythbuster', 'Pozdrav', 'Mail sa attachmentom test', 'C:\Attachment.txt'); 
end;


Btw., na ovakva pitanja ces generalno tesko dobiti odgovor na forumu jer spadaju u osnovno koriscenje Delphija i Pascala.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

Mythbuster
Darko Stojkovic
student
Beograd

Član broj: 204745
Poruke: 35
93.86.41.*



Profil

icon Re: Poslati E-mail sa attachment-om???16.03.2009. u 22:26 - pre 183 meseci
hvala puno, mada takvi odgovori meni i trebaju, jer sam potpuno nov u programiranju, i gotovo bez iskustva...:)
jos samo jedno pitanje:
posto sam ja vec napravio svoju formu za slanje maila (izgled) , kako da se ono sto unesem u formu(e-mail adresa, subject, sadrzaj e-maila...) direktno prekopiraju u Outlook-ov prozor (sto se i desi kada direktno u kodu umesto onoga '[email protected]' ... unesem konkretnu e-mail adresu)
UNAPRED HVALA!!!
Mythbuster
 
Odgovor na temu

.:Marvin:.
Taurunum

Član broj: 36626
Poruke: 94
91.143.212.*



Profil

icon Re: Poslati E-mail sa attachment-om???17.03.2009. u 07:40 - pre 183 meseci
Ovo su bas pocetnicka pitanja, ali oprosticemo ti ako budes zavrsio program :)

Recimo da imas edit boxove, ebEmail, ebName, ebSubject, ebText ...

Kada pozivas funkciju SendMail, umesto neke zakucane email adrese, prosledices mu sadrzaj tvog edit boxa.
Znaci poziv te f-je ce izgledati ovako nekako:

SendMail(ebEmail.text, ebName.text, ebSubject.text, ebText.text, 'C:\Attachment.txt');

Kapiras sada? Text je osobina editboxa u kojoj se nalazi string onog sadrzaja koji si upisao u taj edit box.
 
Odgovor na temu

Mythbuster
Darko Stojkovic
student
Beograd

Član broj: 204745
Poruke: 35
93.87.137.*



Profil

icon Re: Poslati E-mail sa attachment-om???17.03.2009. u 10:11 - pre 183 meseci
hvala puno...:)
bash pocetnicka pitanja i jesu za mene, jer sam ja bas pocetnik, a i imam 15 god, pa se nadam da me onda shvatate...:)
Mythbuster
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Poslati E-mail sa attachment-om???

[ Pregleda: 5563 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.