zbeng Posted July 23, 2007 Report Share Posted July 23, 2007 Deci una din modalitatile de a trimite date pe e-mail este SMTP .Urmariti urmatorul program p-ru a vedea cum functioneaza :unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls, ComCtrls, Psock, NMsmtp;typeTForm1 = class(TForm)Memo: TRichEdit;Panel1: TPanel;SMTP: TNMSMTP;Panel2: TPanel;FromAddress: TEdit;predefined: TLabel;FromName: TEdit;Subject: TEdit;LocalProgram: TEdit;ReplyTo: TEdit;islog: TCheckBox;Host: TEdit;Port: TEdit;userid: TEdit;Button1: TButton;procedure Button1Click(Sender: TObject);privateProcedure CleanContext;procedure PerformConnection;procedure AddMessage(msg:string; color:integer);procedure log(inpt :string);Procedure SetSMTP;publicfunction SendEmail(_to, cc, bcc, Subject, body, attachment:string; HTMLFormat:boolean):boolean;end;var Form1: TForm1;implementation{$R *.DFM}Procedure TForm1.SetSMTP;beginSMTP.Host:=Host.Text;SMTP.Port:=strtoint(Port.text);SMTP.UserID:=userid.text;end;Function GetEmailDateTime:string;var tz:_time_Zone_information;s:string;beginGetTimeZoneInformation(tz);if (tz.Bias*100 div 60)<1000 thens:=format(' -0%d',[tz.Bias*100 div 60])elses:=format(' -%d',[tz.Bias*100 div 60]);result:=formatdatetime('ddd, dd mmm yyyy hh:nn:ss',now)+s;end;Procedure TForm1.CleanContext;{set default values, some of them comes from "Setup" form}beginSMTP.PostMessage.FromAddress:=FromAddress.text;SMTP.PostMessage.FromName:=FromName.text;SMTP.PostMessage.ToAddress.Clear;SMTP.PostMessage.ToCarbonCopy.clear;SMTP.PostMessage.ToBlindCarbonCopy.clear;SMTP.PostMessage.Body.clear;SMTP.PostMessage.Attachments.clear;SMTP.PostMessage.Subject:=Subject.text;SMTP.PostMessage.LocalProgram:=LocalProgram.text;(*Mon, 27 mARTIE 2007 12:37:46 -0700*)SMTP.PostMessage.Date:=GetEmailDateTime;SMTP.PostMessage.ReplyTo:=ReplyTo.Text;end;procedure TForm1.log(inpt :string);var outf:textfile;begin {writing in the log file}if not islog.checked then exit;assignfile(outf, changefileext(paramstr(0), '.log'));if fileexists(changefileext(paramstr(0), '.log')) thenappend(outf)elserewrite(outf);writeln(outf, datetimetostr(now)+'|'+inpt);closefile(outf);end;procedure TForm1.AddMessage(msg:string; color:integer);begin {showing in the memo field progress...}while memo.lines.Count>2000 do memo.lines.Delete(0);memo.sellength:=0;memo.selstart:=length(memo.text);memo.selattributes.Color:=Color;memo.seltext:=#13#10+DateTimeTostr(now)+' '+msg;memo.perform($00B7,0,0);Application.ProcessMessages;if color<>clRed then log(DateTimeTostr(now)+' '+msg) else log('Error: '+DateTimeTostr(now)+' '+msg);end;procedure TForm1.PerformConnection;beginwhile (not SMTP.connected) dobeginSetSMTP;AddMessage('Connecting to SMTP',clBlue);application.processmessages;trySMTP.Connect;AddMessage('No Errors',clBlue);excepton e:exception do AddMessage('Error conection: '+e.message,clBlue);end;end;end;Function TForm1.SendEmail(_to, cc, bcc, Subject, body, attachment:string; HTMLFormat:boolean):boolean;beginPerformConnection;result:=true;CleanContext;tryif (attachment<>'') and (not Fileexists(attachment)) thenbeginAddMessage('Attachment is not ready yet ('+ attachment+') ', clNavy);sleep(300);result:=false;exit;end;SMTP.PostMessage.ToAddress.text:=StringReplace(_to , ';',#13#10, [rfReplaceAll, rfIgnoreCase]);if cc<>'' then SMTP.PostMessage.ToCarbonCopy.text:=StringReplace( cc, ';',#13#10, [rfReplaceAll, rfIgnoreCase]);if bcc<>'' then SMTP.PostMessage.ToBlindCarbonCopy.text:=StringRep lace(bcc, ';',#13#10, [rfReplaceAll, rfIgnoreCase]);if Subject<>'' then SMTP.PostMessage.Subject:=Subject;if HTMLFormat then SMTP.SubType:=mtPlain else SMTP.SubType:=mtHtml;SMTP.PostMessage.Body.Text:=Body;if attachment<>'' then SMTP.PostMessage.Attachments.add(attachment);AddMessage('Sending to '+ _to, clGreen);SMTP.SendMail;AddMessage('Complete.'+#13#10, clGreen);excepton e:sysutils.exception dobeginAddMessage(e.message, clRed);result:=false;end;end;end;procedure TForm1.Button1Click(Sender: TObject);beginSendEmail('vit@vingrad.ru', '', '', 'test', 'body', '', False);end;End.Form- Exemplu :object Form1: TForm1Left = 278Top = 108Width = 539Height = 480Caption = 'Form1'Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'MS Sans Serif'Font.Style = []OldCreateOrder = FalsePixelsPerInch = 96TextHeight = 13object Memo: TRichEditLeft = 0Top = 0Width = 346Height = 420Align = alClientLines.Strings = ('Memo')TabOrder = 0end;object Panel1: TPanelLeft = 0Top = 420Width = 531Height = 33Align = alBottomCaption = 'Panel1'TabOrder = 1object Button1: TButtonLeft = 440Top = 8Width = 75Height = 25Caption = 'Button1'TabOrder = 0OnClick = Button1Clickend;end;object Panel2: TPanelLeft = 346Top = 0Width = 185Height = 420Align = alRightCaption = 'Panel2'TabOrder = 2object predefined: TLabelleft = 8Top = 8Width = 87Height = 13Caption = 'predefined values:'end;object FromAddress: TEditLeft = 24Top = 32Width = 121Height = 21TabOrder = 0Text = 'FromAddress'end;object FromName: TEditLeft = 24Top = 56Width = 121Height = 21TabOrder = 1Text = 'FromName'end;object Subject: TEditLeft = 24Top = 80Width = 121Height = 21TabOrder = 2Text = 'Subject'end;object LocalProgram: TEditLeft = 24Top = 104Width = 121Height = 21TabOrder = 3Text = 'LocalProgram'end;object ReplyTo: TEditLeft = 24Top = 128Width = 121Height = 21TabOrder = 4Text = 'ReplyTo'end;object islog: TCheckBoxLeft = 32Top = 168Width = 97Height = 17Caption = 'islog'TabOrder = 5end;object Host: TEditLeft = 24Top = 240Width = 121Height = 21TabOrder = 6Text = 'Host'end;object Port: TEditLeft = 24Top = 264Width = 121Height = 21TabOrder = 7Text = 'Port'end;object userid: TEditLeft = 24Top = 288Width = 121Height = 21TabOrder = 8Text = 'userid'end;end;object SMTP: TNMSMTPPort = 25ReportLevel = 0EncodeType = uuMimeClearParams = TrueSubType = mtPlainCharset = 'us-ascii'Left = 296Top = 32end;end;Transmitem totul printrun click pe buton :procedure TForm1.Button1Click(Sender: TObject);beginNMSMTP1.Host := 'smtp.mailserver.com';NMSMTP1.UserID := 'h.abdullah';NMSMTP1.Connect;NMSMTP1.PostMessage.FromAddress := 'hasan@excite.com';NMSMTP1.PostMessage.ToAddress.Text := 'someone@xmail.com';NMSMTP1.PostMessage.Body.Text := 'Textul';NMSMTP1.PostMessage.Subject := 'Textul';NMSMTP1.SendMail;end;Deci avem nevoie in acest program shi de TNMSMTP - Component !!!Success.. Quote Link to comment Share on other sites More sharing options...