Mail avec accusé de reception

Signaler
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014
-
 Utilisateur anonyme -
Bonjour j'utilise une appli qui envois des mails (via Indy / Delphi7) et pour l'instant je n'ai pas de souci.

Je n'arrive par contre pas à envoyer des mails avec une demande d'accusé de reception, j'ai cru comprendre que la fonction "ReceiptRecipient" de IdMessage permettait de le faire, en faisant quelque chose du genre :

IdMessage1.ReceiptRecipient.Text:='Expediteur@orange.fr';
ou
IdMessage1.ReceiptRecipient.Adress:='Expediteur@orange.fr';

Mais ca ne marche pas, si quelque sais comment je l'en remercie par avance,

8 réponses


Salut,

L'aide d'Indy en ligne dit ceci (http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdMessage_ReceiptRecipient.html) :


Return receipt email address.

TIdEMailAddressItem
property used to identify the address where a return receipt for the
message should be delivered. The values in ReceiptRecipient are used in
the RFC 2822 message header "Disposition-Notification-To:". A blank
value in ReceiptRecipient indicates that a return receipt is not
desired. 


Use the following properties to get or set the values for the TIdEMailAddressItem


 

ReceiptRecipient.Text , ----
ReceiptRecipient.Name , ----
ReceiptRecipient.Address 


 


Including an email address in ReceiptRecipient does not guarantee that
a receipt notice will be generated when the message is received; the
recipient can always cancel the request.

TIdMessage.Sender 

TIdMessage.From 

TIdEMailAddressItem

TIdMessage Class
TIdMessage Members

<!-- End Page Content --><!-- Begin Page Footer -->Copyright © 1993-2006, Chad Z. Hower (aka Kudzu) and the Indy Pit Crew. All rights reserved., ----
Post feedback to the [news://news.atozed.com/atozedsoftware.indy.documentation Indy Docs Newsgroup].

Il faut savoir que tout les serveurs ne proposent pas d'accusé de réception car ils ne respectent pas la RFC 2822. Dans ce cas là il n'y a rien à faire.

Attention un accusé de réception signifie que le mail a bien été reçu : il ne garantit pas qu'il a été lu ou qu'il n'a pas été mis en spam.
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Merci de cette réponse, mais apparament ce n'est pas un probleme de serveur car quand j'envoi un mail avec accusé de reception via outlook ou ThunderBird  sur une boite orange par exemple, j'ai une demande d'accusé qui m'est faite dès l'ouverure du mail.

Par contre, quand je fais là même chose sur cette même boite mail via mon application, ca ne marche plus, je pense donc que c'est un programme de code et non de serveur.

Es tu sur d'avoir remplis tout les champs ? Comme par exemple : IdMessage1.ReceiptRecipient.EMailAddresses
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Voici mon code :

// ACCUSE DE RECEPTION
if CheckBox1.Checked=True then
    Begin
    IdMessage1.ReceiptRecipient.Address:='Expediteur@orange.fr'; // Adresse à laquelle l'accusé de reception doit revenir (celle de l'expediteur)
    End;

Salut,

Essaye de mettre cela :
IdMessage1.ReceiptRecipient.Address:='Expediteur@orange.fr';
IdMessage1.ReceiptRecipient.EMailAddresses:='Expediteur@orange.fr'
 IdMessage1.ReceiptRecipient.Name : ReceiptRecipient.Name :='Nom du destinataire';

Il est fort possible que le nom du destinataire doit etre définit pour que cela fonctionne (Désolé pas le temps de regarder la RFC 2822.

Regarde si cela fonctionne et si c'est le cas, met en commentaires chacune leur tours les 2 premières fonctions ('Address' et 'EMailAdresses') .

J'ai pas Indy pour tester donc je dis ca, sans trop de conviction

Arfff désolé une coquille de copier/coller : 

IdMessage1.ReceiptRecipient.Name :='Nom du destinataire';
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Merci de ces réponses, mais ca fonctionne pas :

IdMessage1.ReceiptRecipient.Address:='Expediteur@orange.fr'; 
 IdMessage1.ReceiptRecipient.Name :='Nom du destinataire';

Désolé pour le retard : je comprend pas trop pourquoi cela ne fonctionne pas. Normalement quand tu envois un mail à un destinataire, en retour tu es censé obtenir sur ta boite aux lettres un mail comme quoi ton mail a bien été recu.

Bon il est possible (désolé j'ai pas indy d'installé donc j'avance a l'aveuglette) que pour identifier l'adresse a qui est destiné l'accusé il faille définir le nom et l'adresse du destinataire.

IdMessage1.ReceiptRecipient.Address:='Expediteur@orange.fr'; 
 IdMessage1.ReceiptRecipient.Name :='Nom du destinataire';

Par contre tu dois en plus définir le texte recu en guise d'accusé : Donc en plus des 2 lignes de codes précédents, il faut rajouter ceci (par exemple):

IdMessage1.ReceiptRecipient.Text:='Votre mail a bien été reçu';

Si ca fonctionne pas fais un test et montre nous l'en tete complet du teste recu par le destinataire (Oublie pas de cacher les IP et les adresses mails dans ton copier coller) : ca permettra de voir si l'accusé n'a pas été recu, s'il a été mal formaté (ce qui indiquerait un probleme niveau indy : possible) ou si c'est le serveur coté destinataire qui fait pas son job