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

(Resolvido) Enviar e-mail


Vivendo&Aprendendo

Pergunta

Olá galera...

Preciso fazer um envio de e-mail na minha aplicação, eu fiz ele enviando pelo outlook mas quero fazer para ele enviar sem precisar de outro programa, então pesquisei e vi que o indy faz isso e a paleta fastnet também.

Com o indy eu não consegui, está dando erro e gostaria de saber como faço para instalar a paleta FastNet no delphi 7.

Por favor alguém ai me ajuda...

Abraços

Alexandre

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Preciso manda para hotmail e gmail. Como faço isso, não sei as portas nem o smtp e pop deles.

se voce entrar no hotmail ou no gmail, deverá encontrar estas informações lá ( pop3 e smtp ). caso não consiga escreva um email para o administrador do servidor de email pedindo estas informações, para que voce possa usa-la

eu fiz ele enviando pelo outlook

se voce consegue enviar pelo outlook voce já deve ter estas configurações. verifique

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Cara ta certo... Gmail porta 465 hotmail porta 25, mas ainda da o erro.

O código que estou usando está dessa forma:

{Configuração do IdMessage (dados da mensagem)}
  IdMessage.From.Address := e-mail do remetente (hotmail)
  IdMessage.Recipients.EMailAddresses := e-mail do destinatário (hotmail e Gmail)
  IdMessage.Subject := Assunto
  IdMessage.Body.Add(mmMensagem.text); //Corpo da mensagem
  {Configuração do IdSMTP (dados do servidor de email}

  //anexar
  TIdAttachment.Create(IdMessage.MessageParts, 'c:\teste.txt');

//IdSMTP1.BoundIP := '201.00.999.888'; {Endereço IP da sua Maquina no momento}
  IdSMTP.Host := 'smtp.live.com';
  IdSMTP.Port := 25;
  IdSMTP.Username := Login do usuário (rementente)
  IdSMTP.Password := Senha do usuário (remetente)
  IdSMTP.AuthenticationType := atLogin; //tipo da autenticação
  IdSMTP.Connect;
//Estabelece a conexão
[b]  IdSMTP.Authenticate;                       //Faz a autenticação[/b]
try
      IdSMTP.Send(IdMessage);
      showmessage('Ok. Mesagem Enviada com Sucesso.');
      //Envia a mensagem
  except
      showmessage('ERRO. Não enviado.');
//Mensagem de erro
  end;
  IdSMTP.Disconnect;

Quando mando para Gmail mudo a porta para 465

Da erro na linha em negrito.

Mas agora o erro é esse:

5.7.0 Must issue a STARTTLS command first a5sm9996504qbd.17

Abraços

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

  • 0
Quando mando para Gmail mudo a porta para 465

Da erro na linha em negrito.

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

alguns servidores de email requerem autenticação do smtp, e usam a mesma configuração definida no servidor de entrada

OBS: tem certeza que o smtp do gmail é 'smtp.live.com' e a porta é 456 ?

se estiver correto, tem que ver que tipo de autenticação o gmail pede

Mas agora o erro é esse:

5.7.0 Must issue a STARTTLS command first a5sm9996504qbd.17

Tradunção do erro:

Resposta:

STARTTLS ESMTP é a palavra-chave utilizada para iniciar uma conexão segura entre dois servidores SMTP usando o Secure Sockets Layer (SSL) (também conhecida como TLS).

Assim que a ligação tiver sido estabelecida com sucesso todas nova comunicação entre os dois servidores são criptografadas. Isto significa que a origem e o destino de todo o e-mail e a mensagem e conteúdos são todas criptografadas durante a transferência.

Criptografia exige a prévia instalação de chaves em ambos origem e destino servidor. Uma vez que as teclas são instalados GMS dá ao administrador várias escolhas sobre como e-mail será enviado para determinado destinos:

Exigir criptografia. Todas as mensagens entre servidor e este deve ser o destino servidor criptografado durante a transmissão. Se o servidor remoto não estiver disponível, GMS irá conter a mensagem até que ela se torna disponível novamente. Essa opção é mais usada nos casos em que a segurança é um requisito absoluto.

Tente criptografia. Todas as mensagens entre este servidor e o destino servidor será entregue encriptadas se o destino servidor está disponível. Se o destino servidor não está disponível, a mensagem pode ser entregue UNENCRYPTED ao backup servidor de e-mail para o destino. Essa opção é mais usada nos casos em que a velocidade é essencial.

Não encriptar. Essa é a opção padrão e será usado quando chave foi instalado.

Para usar o TLS, você precisará de uma chave de activação Gordano Sales. Uma vez que esta chave está instalado SSL chave pares podem ser gerados usando o programa "keycert" fornecido com GMS e Gordano encontrado no diretório bin.

O keycert programa allowsd você poderá gerar CSR's para apresentação de uma autoridade de certificação e para aplicar esses certificados, uma vez emitidos. Ele também permite que você gere certificados auto assinados, mas esteja ciente de que estas não serão automaticamente reconhecido por outros sites e podem requerer intervenção manual em seu nome para aceitá-los.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Atualizei o meu Indy para a versão 9.0.18 que segundo um membro de outro forum é a mais confiável, baixei as dll's de acesso, mas continua dando o erro citado abaixo

Está dando o seguinte erro agora quando clico em enviar:

Socket Error #10049 Cannot assing request address: Não pode atribuir o endereço do pedido
Segue abaixo o código que eu estou usando:
unit UEmail;

interface

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

type
  TForm1 = class(TForm)
    Label3: TLabel;
    mmMensagem: TMemo;
    BtEnviar: TBitBtn;
    odAnexos: TOpenDialog;
    IdMessage: TIdMessage;
    IdSMTP: TIdSMTP;
    IdPOP31: TIdPOP3;
    IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
    EdtPara: TEdit;
    EdtCC: TEdit;
    EdtCCO: TEdit;
    EdtAssunto: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    cbxPrioridade: TComboBox;
    cbxConfirmaLeitura: TCheckBox;
    Button1: TButton;
    Label7: TLabel;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure BtEnviarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
    if odAnexos.Execute then
        ListBox1.Items.Add(odAnexos.FileName);
end;

procedure TForm1.BtEnviarClick(Sender: TObject);
var xAnexo : Integer;
begin
    IdMessage.Recipients.EMailAddresses := edtPara.Text;
    IdMessage.CCList.EMailAddresses := edtCC.Text;
    IdMessage.BccList.EMailAddresses := edtCCO.Text;
    //Trata a Prioridade da mensagem
    case cbxPrioridade.ItemIndex of
      0 : IdMessage.Priority := mpHigh;
      1 : IdMessage.Priority := mpNormal;
      2 : IdMessage.Priority := mpLow;
   end;
   IdMessage.Subject := edtAssunto.Text;
   IdMessage.Body := mmMensagem.Lines;
   if cbxConfirmaLeitura.Checked then
       IdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta
   //Tratando os arquivos anexos
   for xAnexo := 0 to ListBox1.Items.Count-1 do
       TIdAttachment.create(idmessage.MessageParts, TFileName(ListBox1.Items.Strings[xAnexo]));
   IdSMTP.Connect;
   try
       IdSMTP.Send(IdMessage);
   finally
       IdSMTP.Disconnect;
   end;
   Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);
end;

end.

O que vocês me aconselha a fazer?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Socket Error #10049 Cannot assing request address: Não pode atribuir o endereço do pedido

este erro já foi tratado em outro tópico

http://scriptbrasil.com.br/forum/index.php...st&p=460062

OBS: foi tratado praticamente o mesmo assunto que voce esta com problemas

.............................................................

No seu tópico acima voce colocou:

O código que estou usando está dessa forma:

CODE

{Configuração do IdMessage (dados da mensagem)}

IdMessage.From.Address := e-mail do remetente (hotmail)

IdMessage.Recipients.EMailAddresses := e-mail do destinatário (hotmail e Gmail)

IdMessage.Subject := Assunto

IdMessage.Body.Add(mmMensagem.text); //Corpo da mensagem

{Configuração do IdSMTP (dados do servidor de email}

//anexar

TIdAttachment.Create(IdMessage.MessageParts, 'c:\teste.txt');

//IdSMTP1.BoundIP := '201.00.999.888'; {Endereço IP da sua Maquina no momento}

IdSMTP.Host := 'smtp.live.com';

IdSMTP.Port := 25;

IdSMTP.Username := Login do usuário (rementente)

IdSMTP.Password := Senha do usuário (remetente)

IdSMTP.AuthenticationType := atLogin; //tipo da autenticação

IdSMTP.Connect;

//Estabelece a conexão

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

try

IdSMTP.Send(IdMessage);

showmessage('Ok. Mesagem Enviada com Sucesso.');

//Envia a mensagem

except

showmessage('ERRO. Não enviado.');

//Mensagem de erro

end;

IdSMTP.Disconnect;

Não estou achando alguns comandos no seu codigo que deveriam estar lá...

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Bom Jhonas tenho que te agradecer pela paciência, mas antes de enviar seu último post, eu deu mais uma pesquisada em outros foruns e na net e consegui resolver o meu problema, segue abaixo o código de envio pelo gmail com anexos para qualquer outro e-mail:

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.

Muito obrigado pela ajuda e agora vou melhorar ele...

Abraços

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...