Fórum Enviar e-mail para gmail (Indy) #404563

07/07/2011

0

Pelo muito que eu pesquisei por fóruns e blogs, enviar e-mail usando um programinha simples é igual cabeça de bacalhal. As pessoas falam que existe mas é difícil alguém demonstrar.
Estou tentando fazer algo muito simples. Clicar em um botão e enviar o texto para um e-mail.Eu escolhi o Gmail por que as pessoas falam que funciona com ele.
O meu código é esse:
procedure TForm1.Button1Click(Sender: TObject);begin   with MSG do   begin      Body.Add('corpo da mensagem');      From.Address := 'programadorlegaldemais@gmail.com'; //opcional      From.Name := 'Enviador'; //opcional      Recipients.Add;      Recipients.Items[0].Address := 'programadorlegaldemais@gmail.com';      Recipients.Items[0].Name := 'Receptor'; //opcional      Subject := 'assunto da mensagem';   end;
   try      SMTP.Connect();      SMTP.Send(MSG);      SMTP.Disconnect;      Sleep(1000);   except      ShowMessage('Falha no envio!');      exit;   end;   ShowMessage('Mensagem enviada com sucesso!');end;
procedure TForm1.FormCreate(Sender: TObject);begin   with SMTP do   begin      //AuthenticationType := atLogin;      Host := 'smtp.gmail.com';      IOHandler := SSLSocket;      Password := 'abcdef123';      Port := 465;      Username := 'programadorlegaldemais@gmail.com'; //não esqueça o @gmail.com!!   end;
   SMTP.IOHandler := SSLSocket;   {Trata a segurança e criptografia}   SSLSocket.SSLOptions.Method := sslvSSLv2;   SSLSocket.SSLOptions.Mode := sslmClient;
   MSG.Priority := mpNormal;  //prioridade
end;

Coloquei as dll's libeay32.dll e ssleay32.dll na pasta do projeto e também na pasta system32 do Windows.Porém quando eu clico no botão de enviar do meu programa, aparece um erro dizendo que não foi possível carregar SSL Library.
Eu já ativei lá no meu e-mail também para acessar o gmail de outros programas e tal.As dll's eu baixei daqui: http://indy.fulgan.com/SSL/Archive/indy_openssl096.zip
Meu Delphi é 2009.
Se alguém aí consegue enviar mensagem para um e-mail usando Delphi e pode me ajudar, fico muito agradecido.Vi inúmeros tutoriais sobre isso e muitos posts em foruns também, mas cada um com um problema mais cabeludo do que o outro e no final ou o post era abandonado ou a pessoa resolvia mas não ficava claro todos os mecanismos que foram utilizados para se obter um resultado satisfatório.
Se eu conseguir fazer isso vou criar um tutorial muito bem explicadinho e com links para download até do programa funcionando para ajudar outras pessoas.
Obrigado!
Ricardo

Ricardo

Responder

Posts

07/07/2011

José Araújo

Boa tarde!!
Cara criei um objeto especializado no envio de email.
Implementa ai e testa.

 
unit uSendEMail;

interface

uses
  IdMessage, IdSMTP, uSystemConfig, SysUtils, uSystemUtils, Classes;

type
  TSendEMail = class
  private
    FMailMessage: TIdMessage;
    FSMTP: TIdSMTP;
    FListMensage: TStringList;
    { Private declarations }
  public
    constructor Create;
    destructor Destroy; override;
    //
    property ListMensage: TStringList read FListMensage write FListMensage;
    procedure SendEMail;
    { Public declarations }
  end;

implementation

{ TSendEMail }

constructor TSendEMail.Create;
begin
  FListMensage := TStringList.Create;
  //
  FMailMessage := TIdMessage.Create( nil );
  FMailMessage.Encoding := meMIME;
  //
  FSMTP := TIdSMTP.Create( nil );
  FSMTP.AuthType    := satNone;
  FSMTP.Port        := 25;
  FSMTP.ReadTimeout := 0;
end;

destructor TSendEMail.Destroy;
begin
  if FSMTP.Connected then
    FSMTP.Disconnect;
  //
  FListMensage.Free;
  FMailMessage.Free;
  FSMTP.Free;
  inherited Destroy;
end;

procedure TSendEMail.SendEMail;
begin
  //setup SMTP
  FSMTP.Host := 'smtp';
  //
  //setup mail message
  FMailMessage.From.Address := 'endereco';
  FMailMessage.Recipients.EMailAddresses := 'Destino';
  //
  FMailMessage.Subject   := 'titulo';
  FMailMessage.Body.Text := FListMensage.Text;
  //
  //send mail
  try
    try
      FSMTP.Connect;
      FSMTP.Send( FMailMessage );
    except
      on E: Exception do
        ShowMsgWarning( E.message );
    end;
  finally
    if FSMTP.Connected then
      FSMTP.Disconnect;
  end;
end;

end.

Responder

Gostei + 0

07/07/2011

Emerson Nascimento

eu envio normalmente com esse código:

var
  AutenticouSMTP: boolean;
begin
  //** configura SMTP **
  if ClienteSMTP.Connected then
    try
      ClienteSMTP.Disconnect;
    except
    end;

  ClienteSMTP.Host := FParametrosEmail.SMTPHost; // atribui o host (pop.gmail.com)
  ClienteSMTP.Port := FParametrosEmail.SMTPPorta; // atribui a porta (465)

  if FParametrosEmail.SMTPAutenticacao then // se requer autenticacao
  begin
    ClienteSMTP.Username := FParametrosEmail.SMTPUsername; // atribui o nome do usuario
    ClienteSMTP.Password := FParametrosEmail.SMTPPassword; // atribui a senha
  end
  else
  begin // se não requer autenticacao
    ClienteSMTP.Username := ''; // limpa o usuario
    ClienteSMTP.Password := ''; // limpa a senha
  end;

  if FParametrosEmail.SMTPSSL then // se requer conexao segura
  begin
    ClienteSMTP.IOHandler := SSLHandlerSMTP; // vincula o manipulador de SMTP ao cliente SMTP
    ClienteSMTP.UseTLS := utUseImplicitTLS; // atribui ao cliente SMTP o suporte implícito a TLS

    SSLHandlerSMTP.Port := ClienteSMTP.Port; // atribui a porta ao manipulador (igual a do cliente FTP)
    SSLHandlerSMTP.Destination := ClienteSMTP.Host + ':' + IntToStr(ClienteSMTP.Port); // indica o destino da conexão (pop.gmail.com:465)
    SSLHandlerSMTP.Host := ClienteSMTP.Host; // atribui o host (pop.gmail.com)
  end
  else
  begin // se não requer conexao segura
    ClienteSMTP.IOHandler := nil; // desvincula o manipulador de SMTP
    ClienteSMTP.UseTLS := utNoTLSSupport; // indica que nao ha suporte a TLS
  end;

  AutenticouSMTP := False; // variavel para indicar se a autenticacao foi bem sucedida

  // *** montagem da mensagem ***
  // ****************************
  // cabecalho
  IdMessage1.Clear;
  IdMessage1.ContentType := 'text/html';
  IdMessage1.From.Address := FParametrosEmail.SMTPConta; // conta do remetente
  IdMessage1.From.Name := FParametrosEmail.SMTPNomeExibicao; // nome do remetente
  IdMessage1.Recipients.EMailAddresses := FParametrosEmail.SMTPDestinatarios; // destinatarios (separados por vírgula! não é ponto e vírgula!)
  IdMessage1.Subject := 'Envio de email automatico'; // assunto

  // corpo
  IdMessage1.Body.Clear;
  IdMessage1.Body.Add('<html>');
  IdMessage1.Body.Add('    <body>');
  IdMessage1.Body.Add('        <h4>SISTEMA DE EMAIL AUTOMATICO</h4>');
  IdMessage1.Body.Add('        <font face="Verdana" size=2>');
  IdMessage1.Body.Add('        Teste de envio de email');
  IdMessage1.Body.Add('        <hr size=1 noshade>');
  IdMessage1.Body.Add('        <font face="Courier New" size=2>');
  IdMessage1.Body.Add('Isto é somente um exemplo que você pode tomar como base para gerar as suas mensagens');
  IdMessage1.Body.Add('        </font>');
  IdMessage1.Body.Add('        <b><font face="Tahoma" size=2 color="black">');
  IdMessage1.Body.Add('        <hr size=1 noshade>');
  IdMessage1.Body.Add('        EMITIDO AUTOMATICAMENTE PELO SISTEMA<br>');
  IdMessage1.Body.Add('        <font color="blue">');
  IdMessage1.Body.Add('        Boa semana');
  IdMessage1.Body.Add('        </font>');
  IdMessage1.Body.Add('        </font></b>');
  IdMessage1.Body.Add('    </body>');
  IdMessage1.Body.Add('</html>');

  // efetua a conexao ao servidor SMTP
  if not ClienteSMTP.Connected then
    try
      ClienteSMTP.Connect; // conecta ao SMTP
      if FParametrosEmail.SMTPAutenticacao then // se requer autenticacao
        AutenticouSMTP := ClienteSMTP.Authenticate // efetua a atenticacao e retorna o resultado para a variável
      else // se nao requer autenticacao
        AutenticouSMTP := True; // assume que a conexao foi bem sucedida
    except
      on E:Exception do // em caso de erro gera um log com a mensagem de erro
        ShowMessage('Não foi possível conectar ao servidor SMTP: '+E.Message);
    end;

  // se a conexao foi bem sucedida, envia a mensagem
  if AutenticouSMTP and ClienteSMTP.Connected then
    ClienteSMTP.Send(IdMessage1);

  // depois de tudo pronto, desconecta do servidor SMTP
  if ClienteSMTP.Connected then
    ClienteSMTP.Disconnect;
end;


relação de objetos/classes utilizadas:

ClienteSMTP: TIdSMTP para comunicacao com o servidor SMTP
SSLHandlerSMTP: objeto TIdSSLIOHandlerSocketOpenSSL para uso de conexão segura
IdMessage1: objeto TIdMessage para geração da mensagem

FParametrosEmail: record para guardar os parâmetros de conexão
  TParametrosEmail = record
    SMTPHost, SMTPUsername, SMTPPassword: string;
    SMTPConta, SMTPNomeExibicao, SMTPDestinatarios: string;
    SMTPAutenticacao, SMTPSSL: boolean;
    SMTPPorta: integer;
  end;


exemplo de preenchimento do FParametrosEmail:

  FParametrosEmail.SMTPConta := 'fulano_de_tal@gmail.com';
  FParametrosEmail.SMTPNomeExibicao := 'Fulano de Tal';
  FParametrosEmail.SMTPPassword := 'senhadofulanodetal';
  FParametrosEmail.SMTPUsername := 'fulano_de_tal';

  FParametrosEmail.SMTPHost := 'pop.gmail.com';
  FParametrosEmail.SMTPPorta := 465;
  FParametrosEmail.SMTPAutenticacao := True; // requer autenticacao
  FParametrosEmail.SMTPSSL := True; // requer conexao segura

  // destinatarios separados por virgula
  FParametrosEmail.SMTPDestinatarios := 'emerson.en@ig.com.br,emerson.en@terra.com.br';

Responder

Gostei + 0

07/07/2011

Ricardo

Ojuara, obrigado pela ajuda! Vou testar aqui e retorno dizendo o que aconteceu.
Emerson, você envia e-mails normalmente com esse código sem uso de alguma dll extra? Qual versão do Delphi você utiliza? Porque as pessoas sempre dizem coisas assim, mas geralmente o código sozinho não envia e-mail, não é? Saber apenas o código não ajuda (pelo menos foi o que eu vi na pesquisa que fiz). Geralmente o e-mail não é enviado devido a falta de alguma dll compatível ou o componente utilizado.
Obrigado pela atenção!
Responder

Gostei + 0

07/07/2011

Emerson Nascimento

é preciso das dlls que você citou no seu post (libeay32.dll e ssleay32.dll). grave-as na pasta system32 ou na mesma pasta do executável. elas são necessárias devido ao uso de SSL na conexão. se o SMTP não usar conexão segura essas bibliotecas não serão necessárias.

Responder

Gostei + 0

08/07/2011

Ricardo

Emerson, esse código aí eu coloco no botão enviar, não é?E essa relação de objetos/classes utilizadas. Em qual parte do código isso entraria?Vlw!
Responder

Gostei + 0

08/07/2011

Emerson Nascimento

os objetos:

ClienteSMTP: TIdSMTP para comunicacao com o servidor SMTP
SSLHandlerSMTP: objeto TIdSSLIOHandlerSocketOpenSSL para uso de conexão segura
IdMessage1: objeto TIdMessage para geração da mensagem

são componentes da paleta Indy.
o mais fácil é você clicar no componente e soltar no seu form. você tem como opção criá-los via código, em tempo de execução.



agora TParametrosEmail você pode definir na seção type da unit, preferencialmente antes da definição do seu formulário. e a varíavel você pode declarar na seção private do formulário.

unit XXXXXXXX;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, StrUtils;

type
  // definicao do record que guardará os parâmetros de configuração do email.
  TParametrosEmail = record
    SMTPHost, SMTPUsername, SMTPPassword: string;
    SMTPConta, SMTPNomeExibicao, SMTPDestinatarios: string;
    SMTPAutenticacao, SMTPSSL: boolean;
    SMTPPorta: integer;
  end;

  TFormXXX = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FParametrosEmail: TParametrosEmail; // declaracao da variável
  public
    { Public declarations }
  end;


daí, você atribui as configurações do email onde você quiser. pode exemplo, no OnCreate do Form:

procedure TFormXXX.FormCreate(Sender: TObject);
begin

  FParametrosEmail.SMTPConta := 'fulano_de_tal@gmail.com';
  FParametrosEmail.SMTPNomeExibicao := 'Fulano de Tal';
  FParametrosEmail.SMTPPassword := 'senhadofulanodetal';
  FParametrosEmail.SMTPUsername := 'fulano_de_tal';

  FParametrosEmail.SMTPHost := 'pop.gmail.com';
  FParametrosEmail.SMTPPorta := 465;
  FParametrosEmail.SMTPAutenticacao := True; // requer autenticacao
  FParametrosEmail.SMTPSSL := True; // requer conexao segura

  // destinatarios separados por virgula
  FParametrosEmail.SMTPDestinatarios := 'emerson.en@ig.com.br,emerson.en@terra.com.br';

end;

Responder

Gostei + 0

08/07/2011

Ricardo

Ah sim, entendi!
Eu coloquei o código como vc me passou, mas na hora de criar o "oncreate" do form ou fazer qualquer outra coisa está dando um erro aqui no TForm1.Button1Click.
Está dizendo Expected '=' but '(' found.
E no Type está dando um erro dizendo Expected '@' but received 'record'.
E Expected the end of file but received an identifier 'Button1Click'
Pode dar uma olhada no código fazendo favor?
unit Unit1;
interface
uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,  IdSSLOpenSSL, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,  IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,  IdSMTP;
type  TForm1 = class(TForm)  TParametrosEmail = record    SMTPHost, SMTPUsername, SMTPPassword: string;    SMTPConta, SMTPNomeExibicao, SMTPDestinatarios: string;    SMTPAutenticacao, SMTPSSL: boolean;    SMTPPorta: integer;    ClienteSMTP: TIdSMTP;    IdMessage1: TIdMessage;    SSLHandlerSMTP: TIdSSLIOHandlerSocketOpenSSL;    Button1: TButton;    procedure Button1Click(Sender: TObject);  private  FParametrosEmail: TParametrosEmail; // declaracao da variável    { Private declarations }  public    { Public declarations }  end;
var  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); //AQUI É ONDE DÁ O ERROvar  AutenticouSMTP: boolean;begin  //** configura SMTP **  if ClienteSMTP.Connected then    try      ClienteSMTP.Disconnect;    except    end ;
  ClienteSMTP.Host := FParametrosEmail.SMTPHost; // atribui o host (pop.gmail.com)  ClienteSMTP.Port := FParametrosEmail.SMTPPorta; // atribui a porta (465)
  if FParametrosEmail.SMTPAutenticacao then // se requer autenticacao  begin    ClienteSMTP.Username := FParametrosEmail.SMTPUsername; // atribui o nome do usuario    ClienteSMTP.Password := FParametrosEmail.SMTPPassword; // atribui a senha  end  else  begin // se não requer autenticacao    ClienteSMTP.Username := ''; // limpa o usuario    ClienteSMTP.Password := ''; // limpa a senha  end;
  if FParametrosEmail.SMTPSSL then // se requer conexao segura  begin    ClienteSMTP.IOHandler := SSLHandlerSMTP; // vincula o manipulador de SMTP ao cliente SMTP    ClienteSMTP.UseTLS := utUseImplicitTLS; // atribui ao cliente SMTP o suporte implícito a TLS
    SSLHandlerSMTP.Port := ClienteSMTP.Port; // atribui a porta ao manipulador (igual a do cliente FTP)    SSLHandlerSMTP.Destination := ClienteSMTP.Host + ':' + IntToStr(ClienteSMTP.Port); // indica o destino da conexão (pop.gmail.com:465)    SSLHandlerSMTP.Host := ClienteSMTP.Host; // atribui o host (pop.gmail.com)  end  else  begin // se não requer conexao segura    ClienteSMTP.IOHandler := nil; // desvincula o manipulador de SMTP    ClienteSMTP.UseTLS := utNoTLSSupport; // indica que nao ha suporte a TLS  end;
  AutenticouSMTP := False; // variavel para indicar se a autenticacao foi bem sucedida
  // *** montagem da mensagem ***  // ****************************  // cabecalho  IdMessage1.Clear;  IdMessage1.ContentType := 'text/html';  IdMessage1.From.Address := FParametrosEmail.SMTPConta; // conta do remetente  IdMessage1.From.Name := FParametrosEmail.SMTPNomeExibicao; // nome do remetente  IdMessage1.Recipients.EMailAddresses := FParametrosEmail.SMTPDestinatarios; // destinatarios (separados por vírgula! não é ponto e vírgula!)  IdMessage1.Subject := 'Envio de email automatico'; // assunto
  // corpo  IdMessage1.Body.Clear;  IdMessage1.Body.Add('<html>');  IdMessage1.Body.Add('    <body>');  IdMessage1.Body.Add('        <h4>SISTEMA DE EMAIL AUTOMATICO</h4>');  IdMessage1.Body.Add('        <font face="Verdana" size=2>');  IdMessage1.Body.Add('        Teste de envio de email');  IdMessage1.Body.Add('        <hr size=1 noshade>');  IdMessage1.Body.Add('        <font face="Courier New" size=2>');  IdMessage1.Body.Add('Isto é somente um exemplo que você pode tomar como base para gerar as suas mensagens');  IdMessage1.Body.Add('        </font>');  IdMessage1.Body.Add('        <b><font face="Tahoma" size=2 color="black">');  IdMessage1.Body.Add('        <hr size=1 noshade>');  IdMessage1.Body.Add('        EMITIDO AUTOMATICAMENTE PELO SISTEMA<br>');  IdMessage1.Body.Add('        <font color="blue">');  IdMessage1.Body.Add('        Boa semana');  IdMessage1.Body.Add('        </font>');  IdMessage1.Body.Add('        </font></b>');  IdMessage1.Body.Add('    </body>');  IdMessage1.Body.Add('</html>');
  // efetua a conexao ao servidor SMTP  if not ClienteSMTP.Connected then    try      ClienteSMTP.Connect; // conecta ao SMTP      if FParametrosEmail.SMTPAutenticacao then // se requer autenticacao        AutenticouSMTP := ClienteSMTP.Authenticate // efetua a atenticacao e retorna o resultado para a variável      else // se nao requer autenticacao        AutenticouSMTP := True; // assume que a conexao foi bem sucedida    except      on E:Exception do // em caso de erro gera um log com a mensagem de erro        ShowMessage('Não foi possível conectar ao servidor SMTP: '+E.Message);    end;
  // se a conexao foi bem sucedida, envia a mensagem  if AutenticouSMTP and ClienteSMTP.Connected then    ClienteSMTP.Send(IdMessage1);
  // depois de tudo pronto, desconecta do servidor SMTP  if ClienteSMTP.Connected then    ClienteSMTP.Disconnect;end;
end.
Responder

Gostei + 0

08/07/2011

Emerson Nascimento

Ah sim, entendi!
Eu coloquei o código como vc me passou


você NÃO colocou o código como eu te passei.

preste atenção no exemplo que eu te passei. a definição de TParametrosEmail fica totalmente destacada da definição do Form. são coisas distintas, mas você colocou um dentro do outro. misturou tudo.

o correto é assim:

unit Unit1;

interface
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
   IdSSLOpenSSL, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
   IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
   IdSMTP;

type
  // a definição fica TOTALMENTE FORA da definição do formulário
  TParametrosEmail = record
    SMTPHost, SMTPUsername, SMTPPassword: string;
    SMTPConta, SMTPNomeExibicao, SMTPDestinatarios: string;
    SMTPAutenticacao, SMTPSSL: boolean;
    SMTPPorta: integer;
  end;   TForm1 = class(TForm)     ClienteSMTP: TIdSMTP;     IdMessage1: TIdMessage;     SSLHandlerSMTP: TIdSSLIOHandlerSocketOpenSSL;     Button1: TButton;     procedure Button1Click(Sender: TObject);   private     { Private declarations }     FParametrosEmail: TParametrosEmail; // declaracao da variável   public     { Public declarations }   end; var   Form1: TForm1;


Responder

Gostei + 0

08/07/2011

Ricardo

É, realmente eu não tinha entendido o que era pra fazer e misturei as coisa (sou um infeliz por não nascer sabendo, mas fazer o que, não é?).
No final das contas, o código compilou certinho e adivinhem o que aconteceu! Apareceu o mesmo erro que o MEU código inicial dava, dizendo que não foi possível carregar a SSL library. (Legal, né?)
Se tivessem lido o que eu escrevi quando criei o tópico, veriam que eu já havia pesquisado pela internet e testado diversos códigos diferentes e que o código em si NÃO era o meu problema, mas sim a tal da SSL library que o programa não consegue carregar para enviar o email.
Agradeço muito a "ajuda" que recebi aqui, mas, desculpe a franqueza, só serviu pra me fazer perder tempo dando voltas pra retornar ao mesmo lugar de onde eu sai.
Vou tentar resolver o problema por conta própria mesmo. Se eu conseguir, como havia dito antes, vou fazer um tutorial explicando não só o "milagroso código", mas também versões dos programas utilizados, componentes, dll's, etc.Talvez eu consiga ajudar alguém com tão pouca experiência como eu e que também não saiba de tudo (do contrário, não teria criado um tópico pedindo ajuda).
Obrigado a todos que tentaram ajudar!
Problema Resolvido!!!
Responder

Gostei + 0

08/07/2011

Emerson Nascimento

É, realmente eu não tinha entendido o que era pra fazer e misturei as coisa (sou um infeliz por não nascer sabendo, mas fazer o que, não é?).
No final das contas, o código compilou certinho e adivinhem o que aconteceu! Apareceu o mesmo erro que o MEU código inicial dava, dizendo que não foi possível carregar a SSL library. (Legal, né?)
Se tivessem lido o que eu escrevi quando criei o tópico, veriam que eu já havia pesquisado pela internet e testado diversos códigos diferentes e que o código em si NÃO era o meu problema, mas sim a tal da SSL library que o programa não consegue carregar para enviar o email.
Agradeço muito a "ajuda" que recebi aqui, mas, desculpe a franqueza, só serviu pra me fazer perder tempo dando voltas pra retornar ao mesmo lugar de onde eu sai.
Vou tentar resolver o problema por conta própria mesmo. Se eu conseguir, como havia dito antes, vou fazer um tutorial explicando não só o "milagroso código", mas também versões dos programas utilizados, componentes, dll's, etc.Talvez eu consiga ajudar alguém com tão pouca experiência como eu e que também não saiba de tudo (do contrário, não teria criado um tópico pedindo ajuda).
Obrigado a todos que tentaram ajudar!
Problema Resolvido!!!


como é???

eu também não nasci sabendo. sinceramente não entendi sua resposta.

mas vou ignorar. prefiro achar que você não entendeu o que eu disse, afinal uma mensagem escrita não têm entonação e talvez eu tenha sido mal interpretado.

de qualquer forma te mandei um programa compilado e já com as duas dlls. descompacte numa pasta e renomeie como foi instruído no email.

se o envio do email for bem sucedido, passo a acreditar que suas dlls estejam desatualizadas ou com algum tipo de problema.


Responder

Gostei + 0

08/07/2011

Ricardo

Meu email é rickaurel@gmail.comEsse do código era apenas fictício.Obrigado por toda atenção.
Responder

Gostei + 0

11/07/2011

Adriano Carvalho

olhe ai um codigo facil e util.
// Enviar email
Message1.Body.Clear;
Message1.From.Name := FrmMenu.codEmpre +' - '+frmMenu.empresa;
Message1.Subject := 'Erro Boleto';
Message1.Body.Add('Data/Hora.: '+ DateTimeToStr(Now));
Message1.Body.Add(form);
Message1.Body.Add(e.Message);
Message1.From.Address := 'fdp@uol.com.br';
Message1.Recipients.EMailAddresses := 'suportecp80@gmail.com';
SMTP.Host          := 'smtps.uol.com.br';
SMTP.Username      := '*****@uol.com.br';
SMTP.Password      := '****';
SMTP.AuthType      := satNone;
SMTP.Port          := 25;
Application.ProcessMessages;
SMTP.Connect;
try
Application.ProcessMessages;
SMTP.Send(Message1);
finally
Application.ProcessMessages;
SMTP.Disconnect;
end;

Responder

Gostei + 0

11/07/2011

Emerson Nascimento

Meu email é rickaurel@gmail.comEsse do código era apenas fictício.Obrigado por toda atenção.



recebeu o email? funcionou?
Responder

Gostei + 0

12/07/2011

Ricardo

Recebi sim! Obrigado pela ajuda!Quando coloquei as dll's que me enviou o programa funcionou!
Fiz um tutorial de como fiz e disponibilizei o código e as dll'spara quando alguém estiver com o mesmo problema e precisar.
http://programandodetudo.blogspot.com/2011/07/enviando-email-com-programa-feito-em.html
Obrigado Emerson e todos os que me ajudaram!!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar