Opção de retorno de mensagem enviada pelo outlook express?
14/05/2008
0
Adriano_servitec
Posts
15/05/2008
Adriano_servitec
Estava testando este código aqui
{:Estou verificando se retorna alguma mensagem de volta para meu e-mail} IdMessage.Headers.Values[´Return-Message´] := ´adrianoservitec@uol.com.br´; //FSMTP_From;
Mais não retornou nada.
Estou usando a paleta indy do Delphi 7
O que eu preciso é algo que retorne caso o e-mail enviado não chegue no seu destino, ou seja se não foi recebido, ou se foi recebido tambem, para o e-mail que eu enviei.
15/05/2008
Adriano_servitec
Olá amigo, ja tinha visto este post, mais não retornou nada....Foi por ele que eu fiz o codigo, se tiver mais algo, fico grato
Adriano
15/05/2008
Adriano_servitec
Assim
function TSMTP.Send(Subject: String; FileName: String): Boolean; var LidSMTP: TIdSMTP; LIdMessage : TIdMessage; begin Result:= False; LidSMTP:= TIdSMTP.Create(nil); while not (LidSMTP.Connected) do // enquanto não conectar, o programa vai ficar tentando conectar infinitamente. begin try LidSMTP.Disconnect; LidSMTP.Host := FSMTP_Server; LidSMTP.Port := FSMTP_Port; LidSMTP.Username:= FSMTP_Login; LidSMTP.Password:= FSMTP_Password; LidSMTP.AuthenticationType:= atLogin; LidSMTP.Connect; if not LidSMTP.Connected then Exit; LIdMessage := TIdMessage.Create(nil); try LIdMessage.From.Text:= FSMTP_From; LIdMessage.Recipients.EMailAddresses:= FSMTP_To; LIdMessage.MessageParts.Clear; {:Foi criado para enviar a mensagem que esta na descricao} LIdMessage.Body.Text := FSMTP_Message; TIdAttachment.Create(LIdMessage.MessageParts, FileName); LIdMessage.Subject := Subject; //File_Name + ´ em ´ + FormatDateTime(´dd/mm/yyyy hh:mm´, Now); LIdMessage.Priority:= mpHighest; LidSMTP.Send(LIdMessage); {:Modificado por Adriano - Estou verificando se retorna alguma mensagem de volta para meu e-mail} LIdMessage.Headers.Values[´Return-Receipt-To´] := ´adrianoservitec@uol.com.br´; //FSMTP_From; //LIdMessage.Headers.Add(´Disposition-Notification-To: "Fulano de Tal" <adrianoservitec@uol.com.br>´); LIdMessage.SaveToFile(´c:\pedidos\List.txt´); {:Fim da modificação} Result := True; finally LIdMessage.Free; end; Except {Não conseguiu conectar, tenta conectar novamente em 1 minuto} Sleep(1000); continue; end; // try end; // while LidSMTP.Disconnect; LidSMTP.Free; end;
15/05/2008
Massuda
Lamento. Isso não existe.
No caso do email que chegou no destinatário. O código que sugeri anteriormente é a confirmação de recebimento que o destinatário pode optar por enviar (automaticamente ou não). Se for conta de webmail, geralmente não manda confirmação. Existem os casos onde seu email pode ter sido classificado como spam ou simplesmente ter sido apagado pelo destinatário; novamente, não há como enviar confirmação nesses casos.
O caso do email que não chega, geralmente o problema são endereços de email errados, alguns servidores gentilmente mandam um aviso de erro ao remetente, mas com o crescente volume de spam, muitos simplesmente optam por não enviar aviso de erro. Outra possibilidade, é o domínio do endereço de email ter uma conta ´buraco negro´, para qual todos os emails com endereços inexistentes naquele domínio são enviados; nesse caso, o email chega em algum lugar, por isso não ocorre (a rigor) um erro.
Se você precisa garantir o recebimento de email por parte de terceiros, não existe solução baseada unicamente em software. Este é daqueles casos onde é preciso ter algum tipo de acordo operacional com os destinatários para forçar a confirmação do recebimento por outra forma que não seja o próprio sistema de email.
15/05/2008
Adriano_servitec
Valeu amigo.
Obrigado por responder.
Abraços
T+
Clique aqui para fazer login e interagir na Comunidade :)