 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qui Fev 18, 2016 11:40 am Assunto: email [RESOLVIDO] |
|
|
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 |
|
 |
didonsom Novato

Registrado: Quarta-Feira, 24 de Abril de 2013 Mensagens: 87
|
Enviada: Qui Fev 18, 2016 12:23 pm Assunto: |
|
|
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 |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qui Fev 18, 2016 2:06 pm Assunto: |
|
|
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 |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Fev 18, 2016 2:42 pm Assunto: |
|
|
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 |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Qui Fev 18, 2016 6:54 pm Assunto: |
|
|
joemil escreveu: | verifica o SSL e TLS tb e se precisa login |
Opa, boa noite joemil!
como verifico isso? |
|
Voltar ao Topo |
|
 |
didonsom Novato

Registrado: Quarta-Feira, 24 de Abril de 2013 Mensagens: 87
|
Enviada: Sex Fev 19, 2016 7:50 am Assunto: |
|
|
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..
se tiver duvidas nele, me fale, pq utilizo ele aqui e funciona normalmente
abraços.
Diego |
|
Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Sáb Fev 20, 2016 3:10 pm Assunto: |
|
|
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..
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 |
|
 |
didonsom Novato

Registrado: Quarta-Feira, 24 de Abril de 2013 Mensagens: 87
|
Enviada: Sáb Fev 20, 2016 6:09 pm Assunto: |
|
|
Olá Amigo,
não estou em casa, mais tarde vejo e posto todos as configurações.
Abraços
Diego |
|
Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Sáb Fev 20, 2016 10:43 pm Assunto: |
|
|
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 |
|
 |
didonsom Novato

Registrado: Quarta-Feira, 24 de Abril de 2013 Mensagens: 87
|
Enviada: Dom Fev 21, 2016 10:37 am Assunto: |
|
|
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 |
|
 |
didonsom Novato

Registrado: Quarta-Feira, 24 de Abril de 2013 Mensagens: 87
|
Enviada: Dom Fev 21, 2016 10:38 am Assunto: |
|
|
se tiver apresentando erro, posta o código para ver se consigo ajudar..
abs |
|
Voltar ao Topo |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Dom Fev 21, 2016 12:07 pm Assunto: |
|
|
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 |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Seg Mar 07, 2016 1:51 pm Assunto: |
|
|
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 |
|
 |
didonsom Novato

Registrado: Quarta-Feira, 24 de Abril de 2013 Mensagens: 87
|
Enviada: Seg Mar 07, 2016 2:21 pm Assunto: |
|
|
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 |
|
 |
dleal Aprendiz

Registrado: Quinta-Feira, 15 de Mai de 2014 Mensagens: 156
|
Enviada: Seg Mar 28, 2016 3:08 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|