Unknown 7 лет назад
Родитель
Сommit
a5009fe28c
1 измененных файлов с 36 добавлено и 22 удалено
  1. 36 22
      Quick.SMTP.pas

+ 36 - 22
Quick.SMTP.pas

@@ -5,9 +5,9 @@
   Unit        : Quick.SMTP
   Description : Send Emails
   Author      : Kike Pérez
-  Version     : 1.2
+  Version     : 1.4
   Created     : 12/10/2017
-  Modified    : 07/04/2018
+  Modified    : 19/06/2018
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
@@ -88,7 +88,8 @@ type
     property UseSSL: Boolean read fUseSSL write fUseSSL;
     property Mail : TMailMessage read fMail write fMail;
     function SendMail: Boolean; overload;
-    function SendEmail(const cFrom,cSubject,cTo,cBody : string) : Boolean; overload;
+    function SendMail(aMail : TMailMessage) : Boolean; overload;
+    function SendEmail(const aFromName,aSubject,aTo,aCC,aBC,aBody : string) : Boolean; overload;
   end;
 
 implementation
@@ -147,18 +148,31 @@ begin
   inherited;
 end;
 
-function TSMTP.SendEmail(const cFrom,cSubject,cTo,cBody : string) : Boolean;
+function TSMTP.SendEmail(const aFromName,aSubject,aTo,aCC,aBC,aBody : string) : Boolean;
+var
+  mail : TMailMessage;
 begin
-  fMail.From := cFrom;
-  fMail.Subject := cSubject;
-  fMail.Body := cBody;
-  fMail.Recipient := cTo;
-  fMail.CC := '';
-  fMail.BCC := '';
-  Result := Self.SendMail;
+  mail := TMailMessage.Create;
+  try
+    Mail.From := fMail.fFrom;
+    Mail.SenderName := aFromName;
+    Mail.Subject := aSubject;
+    Mail.Body := aBody;
+    Mail.Recipient := aTo;
+    Mail.CC := aCC;
+    Mail.BCC := aBC;
+    Result := Self.SendMail(mail);
+  finally
+    mail.Free;
+  end;
 end;
 
 function TSMTP.SendMail: Boolean;
+begin
+  Result := SendMail(fMail);
+end;
+
+function TSMTP.SendMail(aMail : TMailMessage) : Boolean;
 var
   msg : TIdMessage;
   SSLHandler : TIdSSLIOHandlerSocketOpenSSL;
@@ -175,26 +189,26 @@ begin
       //create mail msg
       idattach := nil;
       mBody := nil;
-      msg.From.Address := fMail.From;
-      if fMail.SenderName <> '' then msg.From.Name := fMail.SenderName;
-      msg.Subject := fMail.Subject;
-      for email in fMail.Recipient.Split([',']) do msg.Recipients.Add.Address := email;
-      for email in fMail.CC.Split([',']) do msg.CCList.Add.Address := email;
-      for email in fMail.BCC.Split([',']) do msg.BCCList.Add.Address := email;
-      if fMail.fBodyFromFile then
+      msg.From.Address := aMail.From;
+      if aMail.SenderName <> '' then msg.From.Name := aMail.SenderName;
+      msg.Subject := aMail.Subject;
+      for email in aMail.Recipient.Split([',']) do msg.Recipients.Add.Address := email;
+      for email in aMail.CC.Split([',']) do msg.CCList.Add.Address := email;
+      for email in aMail.BCC.Split([',']) do msg.BCCList.Add.Address := email;
+      if aMail.fBodyFromFile then
       begin
-        msg.Body.LoadFromFile(fMail.Body);
+        msg.Body.LoadFromFile(aMail.Body);
       end
       else
       begin
         mBody := TIdText.Create(msg.MessageParts);
         mBody.ContentType := 'text/html';
-        mBody.Body.Text := fMail.Body;
+        mBody.Body.Text := aMail.Body;
       end;
       //add attachements if exists
-      if fMail.Attachments.Count > 0 then
+      if aMail.Attachments.Count > 0 then
       begin
-        for filename in fMail.Attachments do
+        for filename in aMail.Attachments do
         begin
           idattach := TIdAttachmentFile.Create(msg.MessageParts,filename);
         end;