estou tentando enviar email usando o gmail..
o pior e que na minha maquina funciona..
ja nos clientes nao.
estou usando as dlls. do site http://indy.fulgan.com/SSL/
mas mesmo assim nao esta funcionando..
abaixo esta a rotina que uso pra enviar email...
sempre da erro dizendo que eu tenho que chamar STARTTLS antes..
mas nao sei como proceder..

-------------------------- codigo -----------------------------------

class procedure TEmail.enviaEmail(servidor_usuario,
                                  servidor_senha,
                                  servidor_host,
                                  email_de_quem_enviou,
                                  email_destino,
                                  email_copia,
                                  assunto,
                                  mensagem: string;
                                  servidor_porta: integer;
                                  autenticacao : boolean;
                                  anexo: string);
var
 IdMessage : tIdMessage;
 IdSMTP    : tIdSMTP;
 sll       : tIdSSLIOHandlerSocketOpenSSL;
 Anx       : TIdAttachmentFile;



 procedure mostraAviso(texto: string; progresso: integer);
 begin
  if formenviandoemail = nil then
   begin
    formenviandoemail            := tformenviandoemail.create(nil);
    formenviandoemail.g.progress := 0;
   end;
  formenviandoemail.Show;
  formenviandoemail.acao.caption := texto;
  formenviandoemail.G.progress   := progresso;
  Application.ProcessMessages;
 end;

begin
//criando os objetos...
mostraAviso('Configurando para acessar conta...',0);
IdMessage := tIdMessage.create(nil);
IdSMTP    := tIdSMTP.create(nil);
sll       := tIdSSLIOHandlerSocketOpenSSL.Create(nil);

IdSMTP.ReadTimeOut   := 20000;
// Configura o servidor
if autenticacao then
 begin
  mostraAviso('Autenticando...',1);
  sll.SSLOptions.Method := sslvSSLv2;
  sll.SSLOptions.Mode   := sslmClient; //sslmUnassigned;
  idSMTP.IOHandler      := sll;
  idSMTP.UseTLS         := utUseExplicitTLS;// utUseRequireTLS;
 end;

idsmtp.Username           := servidor_usuario; // Usuário
idsmtp.Password           := servidor_senha; // Senha
idsmtp.host               := servidor_host; // Smtp
idsmtp.Port               := servidor_porta; // Porta

// Configura o remetente da Mensagem
mostraAviso('Configurando Assunto...',2);
IdMessage.Clear;
IdMessage.Subject         := LowerCase(assunto); // Assunto do Email
IdMessage.From.Address    := email_de_quem_enviou; // De quem e o Email
//Configura os destinatários (to)
mostraAviso('Configurando email que vai receber msg...',3);
IdMessage.Recipients.Clear;
IdMessage.Recipients.Add;
IdMessage.Recipients.Items[IdMessage.Recipients.Count-1].Address :=
email_destino; // Para quem vai
IdMessage.Recipients.Items[IdMessage.Recipients.Count-1].Name    :=
copy(email_destino,1,pos('@',email_destino)-1);

// Configura os destinatários (cc)
if email_Copia <> '' then
begin
mostraAviso('Configurando Cópia de Email...',4);
IdMessage.Recipients.Clear;
IdMessage.Recipients.Add;
IdMessage.Recipients.Items[IdMessage.Recipients.Count-1].Address :=
email_Copia;
IdMessage.Recipients.Items[IdMessage.Recipients.Count-1].Name    :=
copy(email_Copia,1,pos('@',email_copia)-1);
end;

// Adiciona o HTML ao corpo da mensagem
mostraAviso('Adicionando Texto a msg...',5);
idmessage.ContentType:= 'text/html';
IdMessage.Body.clear;
IdMessage.body.Text := mensagem;

{// Anexa os arquivos
// for I := 0 to lstbxAnexos.items.count -1 do}
if anexo <> '' then
 begin
  mostraAviso('Conectando ao servidor SMTP..',6);
  anx:= TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName(anexo));
  IdMessage.ContentType := 'multipart/mixed';
 end;

IdMessage.Headers.Values['X-Library'] := '';
// Envia Email
try
  try
   mostraAviso('Conectando ao servidor SMTP..',7);
   idsmtp.connect;
   if idsmtp.connected then
    begin
     mostraAviso('Enviando msg..',8);
     idSmtp.send(IdMessage);
    end;
   mostraAviso('Msg enviada',9);
   showMessage('MENSAGEM ENCAMINHADA COM SUCESSO');
  except on E:exception
   do Showmessage('Problemas ao Conectar/enviar mensagem... Tente
Novamente'+#13+ e.message);
  end;
 finally
  idSmtp.disconnect;
 end;
mostraAviso('Finalizando..',8);
//limpando memoria
IdMessage.free;
IdSMTP.Free;
if formenviandoemail <> nil then
 begin
  formenviandoemail.free;
  formenviandoemail:= nil;
 end;
end;

---------------------------- fim --------------------------------------

-- 
-------------------------------------------------------------------
Rafael jorge alves (Analista/desenvolvedor)

www.sistemafocus.com.br
sistema focus de gestão comercial e serviços em informatica.
-------------------------------------------------------------------


[As partes desta mensagem que não continham texto foram removidas]

Responder a