ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

email [RESOLVIDO]
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Qui Fev 18, 2016 11:40 am    Assunto: email [RESOLVIDO] Responder com Citação

Pessoal, tendo em mente o antigo e sábio ditado popular "A Necessidade faz o Homem", resolvo compartilhar o resultado de minhas pesquisas:

Código:

unit uemail;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
  IdSMTP, IdBaseComponent, IdMessage, StdCtrls, Buttons, ExtCtrls, DBCtrls,
  IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL, ComCtrls;

type
  Tfemail = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    edtAssunto: TEdit;
    lbxAnexos: TListBox;
    mmMensagem: TMemo;
    btenviar: TBitBtn;
    btfechat: TBitBtn;
    odAnexos: TOpenDialog;
    IdSMTP: TIdSMTP;
    Label4: TLabel;
    SpeedButton1: TSpeedButton;
    Panel1: TPanel;
    Label5: TLabel;
    Label6: TLabel;
    IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
    IdMessage: TIdMessage;
    Label7: TLabel;
    edtrem: TEdit;
    Timer1: TTimer;
    ProgressBar1: TProgressBar;
    Edtpara: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    procedure btanexarClick(Sender: TObject);
    procedure btfechatClick(Sender: TObject);
    procedure btenviarClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure EdtparaExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  femail: Tfemail;
    Tempo : Integer = 0;
implementation

uses Udmdados;

{$R *.dfm}

procedure Tfemail.btanexarClick(Sender: TObject);
begin
if odAnexos.Execute then
   lbxAnexos.Items.Add(odAnexos.FileName);

end;

procedure Tfemail.btfechatClick(Sender: TObject);
begin
close;
end;

procedure Tfemail.btenviarClick(Sender: TObject);
var
  Anexo : Integer;
  // objetos necessários para o funcionamento
  IdSSLIOHandlerSocket: TIdSSLIOHandlerSocket;
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  CaminhoAnexo: string;
begin

  // instanciação dos objetos
  IdSSLIOHandlerSocket := TIdSSLIOHandlerSocket.Create(Self);
  IdSMTP := TIdSMTP.Create(Self);
  IdMessage := TIdMessage.Create(Self);
 
  try
    // Configuração do SSL
    IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23;
    IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient;
 
    // Configuração do SMTP
    IdSMTP.IOHandler := IdSSLIOHandlerSocket;
    IdSMTP.AuthenticationType := atLogin;
    IdSMTP.Port := 465;
    IdSMTP.Host := 'smtp.gmail.com';
    IdSMTP.Username := 'meuemail@gmail.com';
    IdSMTP.Password := 'minha_senha';
 
    // Tentativa de conexão e autenticação
    try
      IdSMTP.Connect;
      IdSMTP.Authenticate;
    except
      on E:Exception do
      begin
        MessageDlg('Erro na conexão e/ou autenticação: ' +
                    E.Message, mtWarning, [mbOK], 0);
        Exit;
      end;
    end;

    // Configuração da mensagem
   
    IdMessage.From.Name := edtrem.Text;
    IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
    IdMessage.Recipients.EMailAddresses := Edtpara.text;
    IdMessage.Subject := edtAssunto.Text;
    IdMessage.Body.Text := mmMensagem.Text;
    for Anexo := 0 to lbxAnexos.Items.Count-1 do
    TIdAttachment.Create(idmessage.MessageParts, TFileName(lbxAnexos.Items.Strings[Anexo]));
    // Anexo da mensagem (opcional)
//    CaminhoAnexo :
    if FileExists(CaminhoAnexo) then
      TIdAttachment.Create(IdMessage.MessageParts, CaminhoAnexo);
 
    // Envio da mensagem


    try
      Timer1.Enabled:=true;

      IdSMTP.Send(IdMessage);
     // MessageDlg('Mensagem enviada com sucesso.', mtInformation, [mbOK], 0);
    except
      On E:Exception do
        MessageDlg('Erro ao enviar a mensagem: ' +
                    E.Message, mtWarning, [mbOK], 0);
    end;


  finally

    // liberação dos objetos da memória
    FreeAndNil(IdMessage);
    FreeAndNil(IdSSLIOHandlerSocket);
    FreeAndNil(IdSMTP);
  end;
end;

procedure Tfemail.SpeedButton1Click(Sender: TObject);
begin
if odAnexos.Execute then
   lbxAnexos.Items.Add(odAnexos.FileName);
end;

procedure Tfemail.FormShow(Sender: TObject);
begin

edtrem.SetFocus;
end;

procedure Tfemail.Timer1Timer(Sender: TObject);
begin
  Inc(Tempo);
 ProgressBar1.Position:=Tempo;
 Case Tempo of
 1:  Label8.Caption:='Carregando...';
 50: Label8.Caption:='Aguarde... email sendo enviado';
 100:
    begin
      Tempo:=0;
     
      showmessage('email enviado com sucesso!');
        Close;
    end;
 end;

end;

procedure Tfemail.EdtparaExit(Sender: TObject);
begin
if (edtpara.text='') then
begin
showmessage('preenchimento deste campo obrigatorio');
edtpara.setfocus;
end;
  end;
end.


Obrigado a todos que me ajudaram!

Boa tarde, amigos!
Outro problema surgiu. Com ajuda de tópicos enviados por nossos amigos programadores, criei um simples formulário para envio de e-mail.
O que me deixou surpreso, é que no primeiro dia, funcionou perfeitamente.
No dia seguinte, quando fui efetuar mais alguns testes, o sistema já não funcionou mais.
Uso o igmail
Estou usando os seguintes componentes:
TIdMessage

TIdSMTP
host: smtp.ig.com.br
port:587
username: 'meuemail@ig.com.br'
password: 'minhasenha'

Como falei, no primeiro dia, funcionou perfeitamente. Depois, o erro informado é : login or password invalid.

Como pode isso? Alguém tem alguma idéia?
Grato,
Luciano Leal


Editado pela última vez por dleal em Qua Mai 25, 2016 3:35 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Qui Fev 18, 2016 12:23 pm    Assunto: Responder com Citação

Amigo,

já tentou trocar a senha do email "remetente" para ver se ele volta a funcionar?

abaixo um link antigo, de uma rotina que utilizo em minha aplicação e que funciona até hoje.

http://www.hardware.com.br/comunidade/codigo-delphi/1299952/


Abraços,

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Qui Fev 18, 2016 2:06 pm    Assunto: Responder com Citação

didonsom escreveu:
Amigo,

já tentou trocar a senha do email "remetente" para ver se ele volta a funcionar?

abaixo um link antigo, de uma rotina que utilizo em minha aplicação e que funciona até hoje.

http://www.hardware.com.br/comunidade/codigo-delphi/1299952/


Abraços,

Diego


Obrigado, didonsom, mas ainda não consegui. Troquei a senha, tentei outro serviço de email e nada mais funciona. Vou dar uma olhada boa na dica que me deu, depois posto o resultado, ok? Abraços e obrigado,
Luciano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qui Fev 18, 2016 2:42 pm    Assunto: Responder com Citação

verifica o SSL e TLS tb e se precisa login
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Qui Fev 18, 2016 6:54 pm    Assunto: Responder com Citação

joemil escreveu:
verifica o SSL e TLS tb e se precisa login

Opa, boa noite joemil!
como verifico isso?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Sex Fev 19, 2016 7:50 am    Assunto: Responder com Citação

dleal escreveu:
joemil escreveu:
verifica o SSL e TLS tb e se precisa login

Opa, boa noite joemil!
como verifico isso?


veja o tutorial que te mandei...

lá tem tudo isso, como fazer etc.. Razz

se tiver duvidas nele, me fale, pq utilizo ele aqui e funciona normalmente


abraços.

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Sáb Fev 20, 2016 3:10 pm    Assunto: Responder com Citação

didonsom escreveu:
dleal escreveu:
joemil escreveu:
verifica o SSL e TLS tb e se precisa login

Opa, boa noite joemil!
como verifico isso?


veja o tutorial que te mandei...

lá tem tudo isso, como fazer etc.. Razz

se tiver duvidas nele, me fale, pq utilizo ele aqui e funciona normalmente


abraços.

Diego


Boa tarde, Diego!
Estou um pouco confuso com relação aos componentes utilizados no exemplo de seu post. (quais são...)
se puder me dar aquele "empurrão", agradeço!
Abraços,
Luciano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Sáb Fev 20, 2016 6:09 pm    Assunto: Responder com Citação

Olá Amigo,


não estou em casa, mais tarde vejo e posto todos as configurações.

Abraços


Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Sáb Fev 20, 2016 10:43 pm    Assunto: Responder com Citação

didonsom escreveu:
Olá Amigo,


não estou em casa, mais tarde vejo e posto todos as configurações.

Abraços


Diego

ok, amigo! fico muito agradecido, pois estou "fundindo" a cabeça ainda. Cada vez dá um erro diferente. Abraços!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Dom Fev 21, 2016 10:37 am    Assunto: Responder com Citação

Amigo,

veja se com o descritivo abaixo, consigo te ajudar.
O Print das telas tem no link 1º link que enviei pra você então olhando eles fica mais fácil de configurar a tela.

componentes utilizados para a tela de envio de email.

1 - opendialog1
1 - popupMenu1

da Paletta samples
1 - tgauger ( é uma barra de progresso)

da Palleta Indy
1 -IdSmtp1
1 -IdMessage
1 -IdAntFreeze1
1 -SSLSocket

5 Edits
5 labels
1 MemoText

3 - Buttons

1 - PageControl


Componentes utilizados para a tela de configuração de email.

4 - Dbedits
2 - Dbcombobox
2 - dbCheckBox
4 - Buttons


1º Passo

Criar uma tabela de nome email ou como preferir com os campos abaixo:

- id_email
- servidor
- porta
- usuario
- senha
- rementente
- nomeexibicao
- requerautenticacao
- tsl
- ssl
- metodo


2 - Criar um form de nome f_email ou como preferir

Existe um print desse form com a disposição dos botões e tela etc no link http://www.hardware.com.br/comunidade/codigo-delphi/1299952/ )


3 - Criar um form de nome f_configemail ou como preferir (Nesse tutorial não vou entrar em detalhes em como criar os botões para editar, alterar registros na tabela.)

Existe um print desse form com a disposição dos botões e tela no link http://www.hardware.com.br/comunidade/codigo-delphi/1299952/ )

no dbcombobox colocar o nome de TSL e no objetct inspector em Itens adicionar os dados abaixo (para seleção)
0 - Sem Suporte TLS
1 - Implicido TLS
2 - Exigir TLS
3 - Explicito TLS

no dbcombobox colocar o nome de SSL e no objetct inspector em Itens adicionar os dados abaixo (para seleção)
0 - SSL v.2
1 - SS Lv.23
2 - SSL v.3
3 - SSLTLS v.1


4 - Adicionar o codigo conforme o post http://www.hardware.com.br/comunidade/codigo-delphi/1299952/


Abraços,

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Dom Fev 21, 2016 10:38 am    Assunto: Responder com Citação

se tiver apresentando erro, posta o código para ver se consigo ajudar..

abs
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Dom Fev 21, 2016 12:07 pm    Assunto: Responder com Citação

didonsom escreveu:
se tiver apresentando erro, posta o código para ver se consigo ajudar..

abs

Amigo, muito obrigado por sua boa vontade... irei analisar hoje. Posto o resultado pra você. Grato mesmo,
Luciano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Seg Mar 07, 2016 1:51 pm    Assunto: Responder com Citação

dleal escreveu:
didonsom escreveu:
se tiver apresentando erro, posta o código para ver se consigo ajudar..

abs

Amigo, muito obrigado por sua boa vontade... irei analisar hoje. Posto o resultado pra você. Grato mesmo,
Luciano


Caro amigo Diego!
Estou tentando, mas confesso que não estou conseguindo...
preciso de algo mais simples, um simples formulário contendo os componentes para envio IDMessage e o componente para autenticação.
Talvez eu não esteja sabendo configurar o IdSSLIOHandlerSocketOpenSSL, sei lá...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
didonsom
Novato
Novato


Registrado: Quarta-Feira, 24 de Abril de 2013
Mensagens: 87

MensagemEnviada: Seg Mar 07, 2016 2:21 pm    Assunto: Responder com Citação

dleal escreveu:
dleal escreveu:
didonsom escreveu:
se tiver apresentando erro, posta o código para ver se consigo ajudar..

abs

Amigo, muito obrigado por sua boa vontade... irei analisar hoje. Posto o resultado pra você. Grato mesmo,
Luciano


Caro amigo Diego!
Estou tentando, mas confesso que não estou conseguindo...
preciso de algo mais simples, um simples formulário contendo os componentes para envio IDMessage e o componente para autenticação.
Talvez eu não esteja sabendo configurar o IdSSLIOHandlerSocketOpenSSL, sei lá...



aonde está com dificuldade?

você baixou as dlls necessárias para o serviço funcionar?

libeay32.dll
ssleay32.dll
zlib1.dll
msxml5.dll
msxml5r.dll


Abraços

Diego
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
dleal
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 15 de Mai de 2014
Mensagens: 156

MensagemEnviada: Seg Mar 28, 2016 3:08 pm    Assunto: Responder com Citação

didonsom escreveu:
dleal escreveu:
dleal escreveu:
didonsom escreveu:
se tiver apresentando erro, posta o código para ver se consigo ajudar..

abs

Amigo, muito obrigado por sua boa vontade... irei analisar hoje. Posto o resultado pra você. Grato mesmo,
Luciano


Caro amigo Diego!
Estou tentando, mas confesso que não estou conseguindo...
preciso de algo mais simples, um simples formulário contendo os componentes para envio IDMessage e o componente para autenticação.
Talvez eu não esteja sabendo configurar o IdSSLIOHandlerSocketOpenSSL, sei lá...



aonde está com dificuldade?

você baixou as dlls necessárias para o serviço funcionar?

libeay32.dll
ssleay32.dll
zlib1.dll
msxml5.dll
msxml5r.dll


Abraços

Diego


Amigo Diego, obrigado por responder, somente ontem é que reparei na sua resposta!
O caso é que não consegui entender seu código, preciso de algo mais simples, sem o uso do banco de dados.

Estou tentando usar o seguinte código:
Código:

procedure TForm2.BitBtn1Click(Sender: TObject);
var Anexo : Integer;
begin
with IdSMTP do
        begin
            IOHandler := IdSSLIOHandlerSocketOpenSSL1;
            AuthType  := satDefault; //Login
            UseTLS    := utUseRequireTLS;
            ConnectTimeout := 10000;
            ReadTimeout    := 10000;

            Host      := 'smtp.gmail.com';
            Username  := 'email@gmail.com';
            Password  := '******';
            Port      := 465;

        end;//with

        IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv2;
        IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode   := sslmUnassigned;


        IdMessage.Clear;
        IdMessage.MessageParts.Clear;


        if not IdSMTP.Connected then
        begin
            IdSMTP.Connect();
            IdSMTP.Authenticate();
        end;//if

        if IdSMTP.Connected then
           IdSMTP.Send(IdMessage);
        Application.ProcessMessages;
          IdSMTP.Disconnect;
    end;


procedure TForm2.btanexosClick(Sender: TObject);

begin
  if odAnexos.Execute then
    lbxAnexos.Items.Add(odAnexos.FileName);
    end;


Uso os componentes:

1- IdSSLIOHandlerSocketOpenSSL1
2- IdSMTP

Migrei para o Delphi 2010, na esperança de que o Indy 10 viesse a me dar o resultado esperado, mas não funcionou.
O erro é o seguinte:
"Não foi possível localizar o ponto de entrada do procedimento GetThreadLocale na biblioteca de vínculo dinâmico api-ms-win-core-localization---2-1.dll."

"connection closed Gracefully"

Talvez eu não esteja sabendo configurar os componentes...
Abraços,
Luciano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB