Advertisement
Guest User

Email

a guest
Mar 18th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.81 KB | None | 0 0
  1. unit frEmail;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics,
  7.   Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses,
  8.   uniGUIClasses, uniGUIForm, Main, uniGUIBaseClasses, uniImageList, uniButton,
  9.   uniBitBtn, uniPanel, uniLabel, uniDBNavigator, IdTCPConnection, IdTCPClient,
  10.   IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, IdMessage,
  11.   IdBaseComponent, IdComponent, IdIOHandler, IdIOHandlerSocket,
  12.   IdIOHandlerStack, IdSSL, IdSSLOpenSSL, uniMemo, uniEdit, IDText,  IdAttachmentFile;
  13.  
  14. type
  15.   TfrmEmail = class(TfrmPadrao)
  16.     UniPanel2: TUniPanel;
  17.     UniEdit1: TUniEdit;
  18.     UniEdit2: TUniEdit;
  19.     UniEdit3: TUniEdit;
  20.     UniEdit4: TUniEdit;
  21.     UniEdit5: TUniEdit;
  22.     UniEdit6: TUniEdit;
  23.     UniMemo1: TUniMemo;
  24.     UniLabel1: TUniLabel;
  25.     UniLabel2: TUniLabel;
  26.     UniLabel4: TUniLabel;
  27.     UniLabel5: TUniLabel;
  28.     UniLabel6: TUniLabel;
  29.     UniLabel8: TUniLabel;
  30.     UniBitBtn1: TUniBitBtn;
  31.     IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
  32.     IdMessage1: TIdMessage;
  33.     OpenDialog1: TOpenDialog;
  34.     IdSMTP1: TIdSMTP;
  35.     procedure UniBitBtn1Click(Sender: TObject);
  36.     procedure btnNovoClick(Sender: TObject);
  37.     procedure btnExcluirClick(Sender: TObject);
  38.   private
  39.     { Private declarations }
  40.   public
  41.     { Public declarations }
  42.   end;
  43.  
  44. function frmEmail: TfrmEmail;
  45.  
  46. implementation
  47.  
  48. {$R *.dfm}
  49.  
  50. uses
  51.   MainModule, uniGUIApplication;
  52.  
  53. function frmEmail: TfrmEmail;
  54. begin
  55.   Result := TfrmEmail(UniMainModule.GetFormInstance(TfrmEmail));
  56. end;
  57.  
  58. procedure TfrmEmail.btnExcluirClick(Sender: TObject);
  59. var
  60.   // variáveis e objetos necessários para o envio
  61.   IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
  62.   IdSMTP: TIdSMTP;
  63.   IdMessage: TIdMessage;
  64.   IdText: TIdText;
  65.   sAnexo: string;
  66. begin
  67.   // instanciação dos objetos
  68.   IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
  69.   IdSMTP := TIdSMTP.Create(Self);
  70.   IdMessage := TIdMessage.Create(Self);
  71.  
  72.   try
  73.     // Configuração do protocolo SSL (TIdSSLIOHandlerSocketOpenSSL)
  74.     IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23;
  75.     IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient;
  76.  
  77.     // Configuração do servidor SMTP (TIdSMTP)
  78.     IdSMTP.IOHandler := IdSSLIOHandlerSocket;
  79.     IdSMTP.UseTLS := utUseImplicitTLS;
  80.     IdSMTP.AuthType := satDefault;
  81.     IdSMTP.Port := 465;
  82.     IdSMTP.Host := 'smtp.gmail.com';
  83.     IdSMTP.Username := 'masterlojas2016@gmail.com';
  84.     IdSMTP.Password := 'aco236236';
  85.  
  86.     // Configuração da mensagem (TIdMessage)
  87.     IdMessage.From.Address := 'masterlojas2016@gmail.com';
  88.     IdMessage.From.Name := UniEdit1.Text;
  89.     IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
  90.     IdMessage.Recipients.Add.Text := UniEdit2.Text;
  91.  
  92.     if UniEdit3.Text <> EmptyStr then
  93.     IdMessage.Recipients.Add.Text := UniEdit3.Text; // opcional
  94.  
  95.     if UniEdit4.Text <> EmptyStr then
  96.     IdMessage.Recipients.Add.Text := UniEdit4.Text; // opcional
  97.  
  98.     IdMessage.Subject := UniEdit5.Text;
  99.     IdMessage.Encoding := meMIME;
  100.  
  101.     // Configuração do corpo do email (TIdText)
  102.     IdText := TIdText.Create(IdMessage.MessageParts);
  103.     IdText.Body.Add('*** ATENÇÃO! NÃO RESPONDA ESTE E-MAIL! *** ' + #13 + #13 + UniMemo1.Lines.Text);
  104.     IdText.ContentType := 'text/plain; charset=iso-8859-1';
  105.  
  106.     // Opcional - Anexo da mensagem (TIdAttachmentFile)
  107.     sAnexo := UniEdit6.Text;
  108.     if FileExists(sAnexo) then
  109.     begin
  110.       TIdAttachmentFile.Create(IdMessage.MessageParts, sAnexo);
  111.     end;
  112.  
  113.     // Conexão e autenticação
  114.     try
  115.       uniPanel1.Caption := 'Anexando/Enviando E-mail...';
  116.       Application.ProcessMessages;
  117.       IdSMTP.Connect;
  118.       IdSMTP.Authenticate;
  119.     except
  120.       on E:Exception do
  121.       begin
  122.       uniPanel1.Caption := 'Erro na conexão ou autenticação! ';
  123.         Exit;
  124.       end;
  125.     end;
  126.  
  127.     // Envio da mensagem
  128.     try
  129.       IdSMTP.Send(IdMessage);
  130.       uniPanel1.Caption := ' Mensagem enviada com sucesso!';
  131.       btnNovo.SetFocus;
  132.     except
  133.       On E:Exception do
  134.       begin
  135.         uniPanel1.Caption := ' Erro no envio da mensagem!';
  136.       end;
  137.     end;
  138.   finally
  139.     // desconecta do servidor
  140.     IdSMTP.Disconnect;
  141.     // liberação da DLL
  142.     UnLoadOpenSSLLibrary;
  143.     // liberação dos objetos da memória
  144.     FreeAndNil(IdMessage);
  145.     FreeAndNil(IdSSLIOHandlerSocket);
  146.     FreeAndNil(IdSMTP);
  147.   end;
  148.  
  149. end;
  150.  
  151. procedure TfrmEmail.btnNovoClick(Sender: TObject);
  152. begin
  153. //Limpa os campos para um novo email
  154.   UniEdit1.Clear;
  155.   UniEdit2.Clear;
  156.   UniEdit3.Clear;
  157.   UniEdit4.Clear;
  158.   UniEdit5.Clear;
  159.   UniEdit6.Clear;
  160.   UniMemo1.Clear;
  161.   UniEdit1.SetFocus;
  162.  
  163. end;
  164.  
  165. procedure TfrmEmail.UniBitBtn1Click(Sender: TObject);
  166. begin
  167.   inherited;
  168. if OpenDialog1.Execute then
  169.  UniEdit6.Text := (OpenDialog1.FileName);
  170. end;
  171.  
  172. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement