[firebase-br] enviar email para todos clientes

Alysson Gonçalves de Azevedo agalysson em gmail.com
Sex Nov 5 09:24:24 -03 2010


Leia isso:
http://www.devarticles.com/c/a/Delphi-Kylix/Creating-an-SMTP-Server/


Alysson Gonçalves de Azevedo
(11) 8491-7730

(\(''^_^ )/)

"Pobre vive dizendo que não tem nada, mas quando vem a enchente, ele sai
gritando: -Perdi tudo!!!"



2010/11/5 Hugo Jose de Sousa <newprojectsystem em gmail.com>

> unit UEmailBoleto;
>
> interface
>
> uses
>  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
>  Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, PDJRotoLabel,
>  smtpsend, ssl_openssl, mimemess, mimepart, ComCtrls, Gauges;
> { Units para envio de email : smtpsend ssl_openssl mimemess mimepart,}
>
> type
>  TFEmailBoleto = class(TForm)
>    btnEnviarEmail: TBitBtn;
>    ProLabel1: TPDJRotoLabel;
>    TmTempo: TTimer;
>    img1: TImage;
>    GaugeEmail: TGauge;
>    lb1: TLabel;
>    procedure btnEnviarEmailClick(Sender: TObject);
>    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift:
> TShiftState);
>    procedure TmTempoTimer(Sender: TObject);
>    procedure FormShow(Sender: TObject);
>
>  private
>    { Private declarations }
>
>  public
>    { Public declarations }
>  end;
>  TSendMailThread = class(TThread)
>  private
>    FException: Exception;
>    procedure DoHandleException;
>  public
>    smtp: TSMTPSend;
>    sFrom: string;
>    sTo: string;
>    sCC: TStrings;
>    slmsg_Lines: TStrings;
>    constructor Create;
>    destructor Destroy; override;
>  protected
>    procedure Execute; override;
>    procedure HandleException;
>  end;
> procedure EnviarEmail(const sSmtpHost,
>  sSmtpPort,
>  sSmtpUser,
>  sSmtpPasswd,
>  sFrom,
>  sTo,
>  sAssunto: string;
>  boletoPdf: string;
>  sMensagem: TStrings;
>  SSL: Boolean;
>  EnviaPDF: Boolean = true;
>  sCC: TStrings = nil;
>  Anexos: TStrings = nil;
>  PedeConfirma: Boolean = False);
> var
>  FEmailBoleto: TFEmailBoleto;
>
> implementation
>
> uses
>  UImpDoc, UdmImpCS, FuncoesGeral, UdmPrincipal, StrUtils;
>
> {$R *.dfm}
>
> { TSendMailThread }
>
> procedure TSendMailThread.DoHandleException;
> begin
>  Sysutils.ShowException(FException, nil);
> end;
>
> constructor TSendMailThread.Create;
> begin
>  smtp := TSMTPSend.Create;
>  slmsg_Lines := TStringList.Create;
>  sCC := TStringList.Create;
>
>  sFrom := '';
>  sTo := '';
>
>  FreeOnTerminate := True;
>
>  inherited Create(True);
> end;
>
> destructor TSendMailThread.Destroy;
> begin
>  slmsg_Lines.Free;
>  sCC.Free;
>  smtp.Free;
>
>  inherited;
> end;
>
> procedure TSendMailThread.Execute;
> var
>  i: integer;
> begin
>  inherited;
>  try
>    if not smtp.Login() then
>      raise Exception.Create('SMTP ERROR: Login:' + smtp.EnhCodeString +
>        sLineBreak + smtp.FullResult.Text);
>
>    if not smtp.MailFrom(sFrom, Length(sFrom)) then
>      raise Exception.Create('SMTP ERROR: MailFrom:' + smtp.EnhCodeString +
>        sLineBreak + smtp.FullResult.Text);
>
>    if not smtp.MailTo(sTo) then
>      raise Exception.Create('SMTP ERROR: MailTo:' <'> + smtp.EnhCodeString
> +
>        sLineBreak + smtp.FullResult.Text);
>
>    if (sCC <> nil) then
>    begin
>      for I := 0 to sCC.Count - 1 do
>      begin
>        if not smtp.MailTo(sCC.Strings[i]) then
>          raise Exception.Create('SMTP ERROR: MailTo:' <'> +
> smtp.EnhCodeString +
>            sLineBreak + smtp.FullResult.Text);
>      end;
>    end;
>    if not smtp.MailData(slmsg_Lines) then
>      raise Exception.Create('SMTP ERROR: MailData:' + smtp.EnhCodeString +
>        sLineBreak + smtp.FullResult.Text);
>    if not smtp.Logout() then
>      raise Exception.Create('SMTP ERROR: Logout:' + smtp.EnhCodeString +
>        sLineBreak + smtp.FullResult.Text);
>  except
>    try
>      smtp.Sock.CloseSocket;
>    except
>    end;
>    HandleException;
>  end;
> end;
>
> procedure TSendMailThread.HandleException;
> begin
>  FException := Exception(ExceptObject);
>  try
>    {Não mostra mensagens de EAbort}
>    if not (FException is EAbort) then
>      Synchronize(DoHandleException);
>  finally
>    FException := nil;
>  end;
> end;
>
> procedure EnviarEmail(const sSmtpHost,
>  sSmtpPort,
>  sSmtpUser,
>  sSmtpPasswd,
>  sFrom,
>  sTo,
>  sAssunto: string;
>  boletoPdf: string;
>  sMensagem: TStrings;
>  SSL: Boolean;
>  EnviaPDF: Boolean = true;
>  sCC: TStrings = nil;
>  Anexos: TStrings = nil;
>  PedeConfirma: Boolean = False);
> var
>  ThreadSMTP: TSendMailThread;
>  m: TMimemess;
>  p: TMimepart;
>  StreamBoleto: TStringStream;
>
>  i: Integer;
> begin
>  m := TMimemess.create;
>  ThreadSMTP := TSendMailThread.Create;
>  { Não Libera, pois usa FreeOnTerminate := True}
>  StreamBoleto := TStringStream.Create('');
>  try
>    p := m.AddPartMultipart('mixed', nil);
>    if sMensagem <> nil then
>      m.AddPartText(sMensagem, p);
>
>    if (EnviaPDF) then
>    begin
>      m.AddPartBinaryFromFile(boletoPdf, p);
>    end;
>
>    if assigned(Anexos) then
>      for i := 0 to Anexos.Count - 1 do
>      begin
>        m.AddPartBinaryFromFile(Anexos[i], p);
>      end;
>
>    m.header.tolist.add(sTo);
>    m.header.From := sFrom;
>    m.header.subject := sAssunto;
>    m.Header.ReplyTo := sFrom;
>    if PedeConfirma then
>      m.Header.CustomHeaders.Add('Disposition-Notification-To: ' + sFrom);
>    m.EncodeMessage;
>
>    ThreadSMTP.sFrom := sFrom;
>    ThreadSMTP.sTo := sTo;
>
>    if sCC <> nil then
>      ThreadSMTP.sCC.AddStrings(sCC);
>    ThreadSMTP.slmsg_Lines.AddStrings(m.Lines);
>
>    ThreadSMTP.smtp.UserName := sSmtpUser;
>    ThreadSMTP.smtp.Password := sSmtpPasswd;
>
>    ThreadSMTP.smtp.TargetHost := sSmtpHost;
>    ThreadSMTP.smtp.TargetPort := sSmtpPort;
>
>    ThreadSMTP.smtp.FullSSL := SSL;
>    ThreadSMTP.smtp.AutoTLS := True;
>
>    ThreadSMTP.Resume; { inicia a thread }
>
>  finally
>    m.free;
>    StreamBoleto.Free;
>  end;
> end;
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista