Ir para conteúdo
Fórum Script Brasil
  • 0

Como enviar email com anexo


robinhocne

Pergunta

Boa noite pessoal,

Estou tentando criar um rotina no sistema, para fazer backup do banco e enviar por email, pois o banco é pequeno e não tende muito a crescer, porém não estou conseguindo fazer funcionar o envio do email com o anexo, estou utilizando o delphi 7 e o indy 9 para o envio....

             IdMessage1.MessageParts.Clear;
              TIdAttachment.Create(IdMessage1.MessageParts, CamBackup);//Anexo

              //Configuração do IdMessage (dados da mensagem)
              //e-mail do remetente
              IdMessage1.From.Address                 := txtDe.Text;
              //e-mail do destinatário
              IdMessage1.Recipients.EMailAddresses    := txtPara.Text;
              //if ( para <IdMessage1> 0) then
              //IdMessage1.CCList.EMailAddresses := cc;


              IdMessage1.Body.Clear;

              IdMessage1.Subject := 'Backup'; //Assunto
              IdMessage1.Body.Add('==========================================================='); //Corpo da mensagem
              IdMessage1.Body.Add( 'Backup do Software'); //Corpo da mensagem
              IdMessage1.Body.Add('==========================================================='); //Corpo da mensagem


              //Configuração do IdSMTP
              //Configurações remente
              IdSMTP1.AuthenticationType  := atLogin;
              IdSMTP1.Host      := txtSmtp.Text;
              IdSMTP1.Username  := txtUsu.Text;
              IdSMTP1.Password  := txtSen.Text;
              IdSMTP1.Port      := StrToInt( txtPor.Text );
              IdSMTP1.Connect;      //Estabelece a conexão


              IdSMTP1.Authenticate; //Faz a autenticação


              IdSMTP1.Send(IdMessage1);

              //DeleteFile(TblArqCamArqZipado.AsString);

              IdSMTP1.Disconnect;

Porém quando vai autenticar dá erro...

EIdAlreadyConnected erro Already connected.

a configuração que estou fazendo é....

Já tentei pelo gmail, pelo yahoo e pelo hotmail e todos estão dando esse erro, já copia as dlls para a system e a pasta do sistema e mesmo assim continua dando....

vi vários tutorias na internet, mas nenhum consegui fazer funcionar, até mudei para o indy 10, mas também não deu certo...ai voltei para o indy 9, alguém poderia me ajudar ?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

exemplo

unit Unit1;

interface

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

type
TForm1 = class(TForm)
txtPara: TEdit;
txtAssunto: TEdit;
mmoMsg: TMemo;
BtnEnviar: TButton;
IdSMTP: TIdSMTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
IdMessage: TIdMessage;
LblPara: TLabel;
LblAssunto: TLabel;
LblMensagem: TLabel;
LtbAnexos: TListBox;
LblAnexos: TLabel;
BtnAnexos: TSpeedButton;
OpenDialog: TOpenDialog;
procedure BtnEnviarClick(Sender: TObject);
procedure BtnAnexosClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnEnviarClick(Sender: TObject);
var xAnexo : Integer;
begin
IdSMTP.Host:= 'smtp.gmail.com';
IdSMTP.Port:= 465;
IdSMTP.Username:= 'SEU USUÁRIO';
IdSMTP.Password:= 'SUA SENHA';

IdMessage.From.Address:= 'SEU E-MAIL@gmail.com';
IdMessage.From.Name:= 'SEU NOME';
IdMessage.Recipients.EMailAddresses:= txtPara.Text;
IdMessage.Subject:= txtAssunto.Text;
IdMessage.Body:= mmoMsg.Lines;

for xAnexo := 0 to LtbAnexos.Items.Count-1 do
TIdAttachment.create(idmessage.MessageParts, TFileName(LtbAnexos.Items.Strings[xAnexo]));

IdSMTP.Connect(3000);
Application.ProcessMessages;
IdSMTP.Send(IdMessage);
ShowMessage('certo');
IdSMTP.Disconnect;
end;

procedure TForm1.BtnAnexosClick(Sender: TObject);
begin
If OpenDialog.Execute Then
LtbAnexos.Items.Add(OpenDialog.FileName);
end;

end.

Link para o comentário
Compartilhar em outros sites

  • 0
segue código...esta funcionando perfeitamente aqui.
adicionar componente IdMessage1 e IdSMTP1 e IdSSLIOHandlerSocketOpenSSL1;
isso pode ficar dentro de um botão para enviar..
IdSMTP1.Port:=587;
IdSMTP1.Host:='smtp.xxxxx.com';//seu servidor de e-mail
IdSMTP1.Username:='xxxx@xxxxxl.com'; //seu usuario
IdSMTP1.Password:='********'; //senha
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSMTP1.Authenticate;
IdSMTP1.Connect;
//O seu endereço de e-mail
IdMessage1.From.Address :='xxxx@hotmail.com';
//Aqui vai o endereço de e-mail para o qual você quer mandar o e-mail, se mais emails colocar separado por virgula
IdMessage1.Recipients.EMailAddresses := xxxxl@xxxxxx.com';//email de seu cliente onde deseja enviar
//O assunto da mensagem
IdMessage1.Subject :='colocar o assunto ' ;
//conteudo da mensagem
IdMessage1.Body.Add(memo2.Lines.Text); // texto da mensagem....
TIdAttachmentfile.Create(IdMessage1.MessageParts, TFileName(extractfilepath(paramstr(0))+'\tesste.pdf')); //aqui voce pode colocar arquivo em anexo....
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;
Application.MessageBox('Email enviado com sucesso!', 'Confirmação',
MB_ICONINFORMATION + MB_OK);
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...