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

Registrado: Sábado, 24 de Mai de 2014 Mensagens: 95
|
Enviada: Sex Jan 23, 2015 4:08 pm Assunto: Código para enviar e-mail com anexos, ajuda !! |
|
|
Olá amigos, sou inciante em Delphi e preciso finalizar meu programinha, tenho que começar do "0" mesmo. To tentando montar um código com as informações do meu form e não consigo, sempre dar algum erro, já montei uns 15 programas e nada. Alguém poderia montar esse código para mim, por favor??
No meu Form só tenho:
1- MaskEdit1 >> (para colocar CNPJ)
1- Edit2 >> ( para colocar o Nome da Filial)
1- Edit6 >> ( para colocar o e-mail do DESTINATÁRIO )
1- Edit1 >> ( para colocar 1 anexo )
1- Edit4 >> ( para colocar 2 anexo )
1- Edit5 >> ( para colocar 3 anexo )
1- Button1 >> ( para enviar o e-mail com os anexos e os dados do CNPJ e nome da filial para o Destinatário )
Criei um e-mail no Gmail ( como REMETENTE ), pois soube que é o melhor para trabalhar, só para ser um remetente FIXO, para qualquer destinatário.
O último que tentei pensando ser o mais simples, foi esse erro e abaixo o código: (sem ligar aos dados acima, primeiro quero enviar depois ligar aos Edits e Maskedit)
Debugger Exception Notification
Project email.exe raised excepction class EIdOSSLConnectError with message ‘Error connecting with SSL.’. Process stopped. Use Step or Run to continue.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL,
IdMessage, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP;
type
TForm1 = class(TForm)
SMTP: TIdSMTP;
MSG: TIdMessage;
SSLSocket: TIdSSLIOHandlerSocket;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
with SMTP do
begin
AuthenticationType := atLogin;
Host := 'smtp.gmail.com';
IOHandler := SSLSocket;
Password := '******';
Port := 465;
Username := '***********@gmail.com'; //não esqueça o @gmail.com!!
end;
SSLSocket.SSLOptions.Method := sslvSSLv2;
SSLSocket.SSLOptions.Mode := sslmClient;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with MSG do
begin
Body.Add('TESTE ENVIO');
From.Address := '***********@gmail.com'; //opcional
From.Name := 'VLADEMIR'; //opcional
Recipients.Add;
Recipients.Items[0].Address := '*********@hotmail.com';
Recipients.Items[0].Name := 'vlade'; //opcional
Subject := 'teste envio de e-mail';
end;
try
SMTP.Connect();
SMTP.Send(MSG);
SMTP.Disconnect;
except
ShowMessage('Falha no envio!');
exit;
end;
ShowMessage('Mensagem enviada com sucesso!');
end;
end.
Tambem coloquei as 2 dll > libeay32.dll e ssleay32.dll na pasta do progara e na pasta C:\Windows\System32
Alguém pode ajudar?
Att |
|
Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Sáb Jan 24, 2015 2:25 pm Assunto: |
|
|
Código: |
uses
IdSMTP, IdMessage, IdSSLOpenSSL;
...
procedure TForm1.Button1Click(Sender: TObject);
var
// 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 := 'usuario';
IdSMTP.Password := '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.Address := 'meu.email@gmail.com';
IdMessage.From.Name := 'Meu Nome';
IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
IdMessage.Recipients.EMailAddresses := 'destinatario@email.com';
IdMessage.Subject := 'Assunto do e-mail';
IdMessage.Body.Text := 'Corpo do e-mail';
// Anexo da mensagem (opcional)
CaminhoAnexo := 'C:\Anexo.txt';
if FileExists(CaminhoAnexo) then
TIdAttachment.Create(IdMessage.MessageParts, CaminhoAnexo);
// Envio da mensagem
try
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; |
créditos/fonte:
http://www.subrotina.com.br/delphi-envio-de-e-mail-com-componentes-indy/ _________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
 |
RegisSantos Novato


Registrado: Domingo, 13 de Mai de 2012 Mensagens: 78
|
Enviada: Sáb Jan 24, 2015 5:08 pm Assunto: |
|
|
A um tempo atrás fiz um projeto parecido, porém o programa extraia as dll's utilizando resource, assim conseguia fazer o envio.
você vai precisar utilizar os seguintes componentes:
IdSSLIOHandlerSocket
IdSMTP
IdMessage
Segue a source de um enviador feito por um gringo.
(A SOURCE JÁ CONTÉM AS DLL's)
http://puu.sh/eYfLR/68f5c9bbd3.rar |
|
Voltar ao Topo |
|
 |
VlademirLemos Novato

Registrado: Sábado, 24 de Mai de 2014 Mensagens: 95
|
Enviada: Seg Jan 26, 2015 12:26 pm Assunto: |
|
|
Olá amigos strak2012 e RegisSantos, eu já tentei fazer nesse mesmo tópico, fiz tudo certinho e deu erros.
Agora eu baixei um programa pronto com fontes, só fiz acrescentar meu dados e eu erros, porém acho que serão mais fáceis de resolver.
Segue o código e os erros para analisarmos:
O ERRO:
Socket Error #11001
Host not found.
O CÓDIGO
unit UEmail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdMessage, Buttons, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdPOP3;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
EdtPara: TEdit;
EdtAssunto: TEdit;
MemMensagem: TMemo;
LbxAnexos: TListBox;
Label4: TLabel;
ButAnexar: TBitBtn;
ButEnviar: TBitBtn;
ButFechar: TBitBtn;
ODAnexos: TOpenDialog;
IdMessage: TIdMessage;
IdSMTP: TIdSMTP;
IdPOP3: TIdPOP3;
procedure ButAnexarClick(Sender: TObject);
procedure ButFecharClick(Sender: TObject);
procedure ButEnviarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButAnexarClick(Sender: TObject);
begin
if odAnexos.Execute then
lbxAnexos.Items.Add(odAnexos.FileName);
end;
procedure TForm1.ButFecharClick(Sender: TObject);
begin
close;
end;
procedure TForm1.ButEnviarClick(Sender: TObject);
var Anexo : Integer;
begin
// Dados da Mensagem
IdMessage.Recipients.EMailAddresses := EdtPara.Text; // email do Destinatário
IdMessage.Subject := EdtAssunto.Text; // assunto
IdMessage.Body := MemMensagem.Lines; // texto da mensagem
IdMessage.From.Address := '*********@gmail.com'; // Email do Remetente
IdMessage.From.Name := '**************'; // Nome do Remetente, que aparecerá qdo chegar.
//Manipulando os Anexos
for Anexo := 0 to lbxAnexos.Items.Count-1 do
TIdAttachment.Create(IdMessage.MessageParts, TFileName(lbxAnexos.Items.Strings[Anexo]));
// Configurações POP3
// !! -- É aqui onde a maioria dos códigos falham. Em alguns provedores é necessário receber mensagens
// !! -- para depois enviar. Não basta, portanto, só o SMTP. É necessário colocar o componente IdPOP3
// !! -- da paleta Indy Clients e configurá-lo.
IdPOP3.Host := 'pop3.gmail.com.br'; // servidor POP3 do seu provedor
IdPOP3.Username := '***********'; // seu login de e-mail
IdPOP3.Password := '***********'; // sua senha -- Recomenda-se usar uma Edit com máscara!!
IdPOP3.Connect;
IdSMTP.Host := 'smtp.gmail.com'; // servidor SMTP do seu provedor
IdSMTP.AuthenticationType := atLogin {atLogin}; // sem autenticação (já foi feita no POP3)
// !! -- caso seu provedor não use POP3, apague as configurações POP3, mude a autenticação para atLogin
// !! -- e habilite as 2 linhas abaixo:
//IdSMTP.Username := 'fulano'; // seu login de e-mail
//IdSMTP.Password := 'senha_do_fulano'; // sua senha -- Recomenda-se usar uma Edit com máscara!!
IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
finally
IdSMTP.Disconnect;
end;
Application.MessageBox('Email enviado com sucesso!', 'Confirmação',MB_ICONINFORMATION + MB_OK);
end;
end.
OBS: nesse código fonte, só fiz alterar meu e-mail, usuário e minha senha no campos " ***********"
tentei enviar email para hotmail e gmail e nada !!!
dados do form:
object Label1: TLabel Caption = 'Para:'
object Label2: TLabel Caption = 'Assunto:'
object Label3: TLabel Caption = 'Mensagem:'
object Label4: TLabel Caption = 'Anexos:'
object EdtPara: TEdit
object EdtAssunto: TEdit
object MemMensagem: TMemo
object LbxAnexos: TListBox
object ButAnexar: TBitBtn Caption = 'Anexar...'
object ButEnviar: TBitBtn Caption = 'Enviar'
object ButFechar: TBitBtn Caption = 'Fechar'
object ODAnexos: TOpenDialog
Att |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|