cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 12 oct. 2011 à 13:08
Tans mieux!
Je n' utilise pas cette unité car je suis habitué à faire la construction du mail "manuellement" ce qui m' a permis de comprendre comment ça marche.
A+
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018 12 oct. 2011 à 12:56
Ca marche! Avec IdMessageBuilder, cela fait exactement ce que je cherchais.
j'ai le message "Afficher les contenus maintenant" et quand on clique dessus les images apparaissent!
merci Mauricio! T'es un chef!
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 12 oct. 2011 à 10:58
Salut Gérard,
pour info, j' utilise Indy Tiburon (version unicode) car j' ai Delphi 2009. Je n' ai à ce jour aucun problème d' envoi/réception de mails.
Toute autre version de Indy peut poser problème car seule la version Tiburon est mise à jour: peut-être que ton problème à l' envoi vient de ta version d' Indy!?
Sinon, c' est forcément le contentPart du TIdMessage.
Bonne chance,
A+
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018 12 oct. 2011 à 10:53
Bien sûr, c'est ce que j'ai fait, mais cela n'a pas été reconnu!
Je ne dois pas l'avoir dans le package Turbo Delphi que j'utilise.
en fait je viens de faire une recherche dans l'ordi entier et je viens de le trouver. Je vais l'inclure au projet et te dire si je progresse!
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 12 oct. 2011 à 10:42
Ajoute l' unité IdMessageBuilder.pas à tes "Uses".
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018 12 oct. 2011 à 10:36
Il me semble avoir assez bien compris ce que tu expliques, mais malheureusement, même en précisant le type Multipart/alternative comme tu le proposes, cela ne change rien:
Si je ne crée pas le TIDAttachmentfile, j'ai bien le texte html, si je l'ajoute, j'ai bien l'image dans le corps mais plus le texte!
Je suis vraiment désolé....
d'autre part, je n'ai pas trouvé l'accès au IdMessageBuilder. il me semble pourtant avoir Indy10...
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 10 oct. 2011 à 11:15
Salut Gérard,
ton problème vient de cette ligne:
mess.ContentType := 'multipart/related; type="text/html"';
comme je l' explique, la valeur que l' on donne à mess.ContentType dépend de plusieurs facteurs:
- Si on envoi le message en texte simple alternatif
- Si on envoi le message en texte au format Html
- Si on envoi des images embouties au format html
- Si on envoi des pièces jointes
Une mauvaise indication de cette propriété et c' est la galère assurée!
Dans ton exemple, tu as du texte html + texte simple alternatif + image emboutie.
La valeur à mettre est donc: 'multipart/related; type="multipart/alternative"'
Si tu y mets en plus une piece jointe, il faut mettre 'multipart/mixed'
Tout ceci est expliqué plus haut ...
Alternativement, les compos Indy viennent avec une nouvelle classe qui permet de simplifier l' envoi de mails: TIdMessageBuilder !
A+
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018 8 oct. 2011 à 17:11
Bon j'ai continué à explorer ce domaine, mais j'en arrive provisoirement à une conclusion plutôt pessimiste. en effet, une amie à qui j'envoie aussi mes tests ne reçois pas tout à fait la même chose que moi lorsque je m'envoie le mail ci-dessus.
donc Mauricio, si par gentillesse tu testes mon code, tu risques aussi de ne pas constater ce que je vois!
Du coup je suis allé voir directement chez le postmaster et non plus dans le gestionnaire de messagerier, et chez les deux postmaster que je regarde je n'y ai pas trouvé non plus la même chose.
a la poste.net, bien qu'un pièce jointe soit annoncée dans la corbeille attachée au mail envoyé, quand on ouvre celui-ci on n'y trouve ni le message, ni la pièce jointe.
chez gmail, par contre on trouve à la fois le message et la pièce jointe, pas avec une présentation super mais enfin ils y sont.
On a donc à faire à une situation où il semblerait que les différents intervenants interprètent la norme MIME comme ils l'entendent!
En gros il y a trois intervenants: Indy qui est chargé de coder, le postmaster qui fait ce qu'il en veut, et le gestionnaire de messagerie qui en fait aussi ce qu'il en veut.
comme mon intention était de diffuser aux différents joueurs sur notre site qui ont tous des postmasters différents et des gestionnaires itou, je me vois mal parti!
Il doit bien y avoir une solution, car on reçoit bien ce type de mail, mais laquelle?
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018 7 oct. 2011 à 19:19
Merci de ta réponse rapide, mais cela ne marche toujours pas.
j'ai pourtant fait le plus simple possible, une petite page html avec une image.
J'ai soit le texte si je ne mets pas le TIdAttachmentfile, soit l'image, mais pas les deux!
mon code:
VAR
emailAddress: string;
smtp: TIdSMTP;
mess: TIdMessage;
HtmlPart: Integer; //Indice de l' objet TIdText avec le corps en HTML, ça va permettre de lier un autre objet à cet TidText.
PlainTextParentPart: Integer; // ParentPart que l' on va mettre pour l' objet contenant le corps en plain/text.
HtmlParentPart: Integer; // ParentPart que l' on va mettre pour l' objet contenant le corps en HTML.
idTexto : TIdText;
const
TextHTML='<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Test</title>'
+'</head>Ceci est un essai.'
+'</html>';
begin
smtp:= TIdSMTP.create;
mess:= TIdMessage.Create;
smtp.Port := 25;
smtp.Username:= 'Gerard';
smtp.Password:= 'PassWord';
smtp.Host := 'smtp.gmail.com';
smtp.Connect;
with TIdText.Create(mess.MessageParts, Nil) do
begin
ContentType := 'multipart/alternative';
end;
// Cet objet a le code 0 (part), donc on informe les variables pour faire la liaison plus tard:
HtmlParentPart := 0;
PlainTextParentPart := 0;
// Corps au format HTML :
idTexto := TIdText.Create(mess.MessageParts, Nil);
idTexto.Body.Text := TextHTML;
idTexto.ContentType := 'text/html';
idTexto.ParentPart := HtmlParentPart;
// Corps au format Plain-Text :
idTexto := TIdText.Create(mess.MessageParts, Nil);
idTexto.Body.Text := 'Ceci est un essai.';
idTexto.ContentType := 'text/plain';
idTexto.ParentPart := PlainTextParentPart;
{with TIdAttachmentFile.Create(Mess.MessageParts, 'C:\Bridgez\Web Server\Relance\RoadMap.jpg') do
Begin
ContentID:= 'RoadMap';
contentType:= 'image/jpeg';
ParentPart := HtmlParentPart;
FileName:= 'RoadMap.jpg';
End; }
mess.From.Text := 'Bridgez';
mess.Subject := 'Test HTML'; //;
mess.Recipients.EMailAddresses := emailAddress;
mess.ContentType := 'multipart/related; type="text/html"';
if smtp.Connected then
smtp.Send(mess);
end;
Merci de ton aide en tout cas!
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 7 oct. 2011 à 12:09
Salut Gerard,
comme explique ci-dessu:
Le problème est qu' il faut correctement définir:
- la propriété ContentType du compo TIdMessage et de chaque objet (TIdText par exemple) inclu dans notre TIdMessage.
- la propriété ContentType/FileName/ContentID/ParentPart de l' objet TIdAttachmentFile.
- la propriété ContentType/ParentPart de l' objet TIdText.
Je pense que ton problème vient de la propriété ContentType du compo TIdMessage:
idMsg.ContentType := xxx;
En effet, selon que tu aies du Html ou/et du texte simple alternatif ou/et des anexes ou/et des images embouties, il faut définir correctement la propriété idMsg.ContentType car sinon certains éléments peuvent être cachés.
A+
cs_Gerard
Messages postés121Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 7 août 2018 7 oct. 2011 à 11:56
Merci pour tout ce travail, mais finalement je n'y arrive pas.
a chaque fois que j'envoie le mail, je reçois la page Html sans les images qui devraient y être rattachées, (lorsque je ne mets aucun TidAttachmentFile) mais aussitôt que j'y mets un attachment, je ne reçois que celui-ci, et pas la page html dans laquelle il devrait se trouver.
j'ai pas mal tourné autour mais je n'y suis toujours pas arrivé.
voilà la façon dont j'ajoute les attachment: c'est peutêtre là que vient le problème?
with TIdAttachmentFile.Create(Mess.MessageParts, 'C:\Bridgez\Web Server\Relance\RoadMap.jpg') do
Begin
ContentID:= 'RoadMap';
contentType:= 'image/jpeg';
ParentPart := HtmlParentPart;
FileName:= 'RoadMap.jpg';
End;
J'ai essayé tous les type de MailContent, rien n'a changé....
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 11 janv. 2008 à 20:42
@mauricio :
Oui oui intéressant..mais maintenant, il faut faire la synthèse entre le source de Francky et le tien !
et il faut du temps..
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 11 janv. 2008 à 20:04
@francky :
Oué oué je fais ma pub ^^. Bien comme ca Cantador comprendra l'expression "créer plus intiment ces mails" lol.
c'est surtout tes 11 points d'explications complémentaires que tu as gentiment fournis qui ont ébloui le forum.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 11 janv. 2008 à 10:09
Encore une fois désolé pour la traduction, j' ai passé beaucoup de temps sur ce tuto, mais cette phrase m' a échappée!!!
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 11 janv. 2008 à 10:07
Bonjour à tous,
désolé mais la phrase n' a pas été traduite, d' ailleurs, elle ne devrait même pas être lá étant donné que c' est un commentaire juste pour mon programme d' oú est tiré le code(Bonne traduc Cari). Cela veut dire que mon programme mail envoie toujours le texte au format simple comme alternative, donc mon mail à envoyer ne sera jamais de ce type, je répète: dans mon cas biensûr ...
Ça me gène pas que vous fassiez votre pub, d' ailleurs, ça m' interesse et je vais regarder cela plus tard ...
A+
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 10 janv. 2008 à 22:27
Bonsoir Delphiprog,
Ca signifie:
« Nous n'utilisons pas ce type parce que nous utilisons toujours le format texte dans nos mails ».
Enfin... sous contrôle de MAURICIO qui rectifiera si nécessaire.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 10 janv. 2008 à 22:05
Bonsoir les amis,
Encore un bon code [Made by Mauricio].
Mais, qu'est-ce que signifie donc : "Não usamos este tipo porque mandamos sempre o mail em formato texto ..." ?
J'avoue que j'ai la flemme de (faire) traduire cette phrase :(
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 10 janv. 2008 à 16:58
Salut Cari,
c' est ma 3ème source je crois sur les compos Indy concernant les mails, je traite les problèmes que j' ai rencontré afin d' en faire bénéficier les membres ...
C' est sûr que Billou, bem maintenant qu' il a fait une console potable, bem il veut plus bosser lol ...
Les mauvaises langues diront que c' est parce qu' il en a marre de faire le show deavnt des milliers de personnes pour présenter des produits qui s' autodétruisent tout seul (lá je pense surtout à la XBox360).
A+
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 10 janv. 2008 à 16:42
Un commentaire quand même:
-On ne pourra bientôt plus dire « chez Billou »... ;)
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 10 janv. 2008 à 16:35
Salut MAURICIO,
Je n'ai pas de courrier à envoyer pour le moment... :)
Mais sûr que ton tuto me sera utile un jour et que je m'y plongerai en premier.
12 oct. 2011 à 13:08
Je n' utilise pas cette unité car je suis habitué à faire la construction du mail "manuellement" ce qui m' a permis de comprendre comment ça marche.
A+
12 oct. 2011 à 12:56
j'ai le message "Afficher les contenus maintenant" et quand on clique dessus les images apparaissent!
merci Mauricio! T'es un chef!
A+
12 oct. 2011 à 10:58
pour info, j' utilise Indy Tiburon (version unicode) car j' ai Delphi 2009. Je n' ai à ce jour aucun problème d' envoi/réception de mails.
Toute autre version de Indy peut poser problème car seule la version Tiburon est mise à jour: peut-être que ton problème à l' envoi vient de ta version d' Indy!?
Sinon, c' est forcément le contentPart du TIdMessage.
Bonne chance,
A+
12 oct. 2011 à 10:53
Je ne dois pas l'avoir dans le package Turbo Delphi que j'utilise.
en fait je viens de faire une recherche dans l'ordi entier et je viens de le trouver. Je vais l'inclure au projet et te dire si je progresse!
12 oct. 2011 à 10:42
Aide à l' utilisation:
http://www.indyproject.org/sockets/blogs/RLebeau/20080116.EN.aspx
A+
12 oct. 2011 à 10:36
Si je ne crée pas le TIDAttachmentfile, j'ai bien le texte html, si je l'ajoute, j'ai bien l'image dans le corps mais plus le texte!
Je suis vraiment désolé....
d'autre part, je n'ai pas trouvé l'accès au IdMessageBuilder. il me semble pourtant avoir Indy10...
10 oct. 2011 à 11:15
ton problème vient de cette ligne:
mess.ContentType := 'multipart/related; type="text/html"';
comme je l' explique, la valeur que l' on donne à mess.ContentType dépend de plusieurs facteurs:
- Si on envoi le message en texte simple alternatif
- Si on envoi le message en texte au format Html
- Si on envoi des images embouties au format html
- Si on envoi des pièces jointes
Une mauvaise indication de cette propriété et c' est la galère assurée!
Dans ton exemple, tu as du texte html + texte simple alternatif + image emboutie.
La valeur à mettre est donc: 'multipart/related; type="multipart/alternative"'
Si tu y mets en plus une piece jointe, il faut mettre 'multipart/mixed'
Tout ceci est expliqué plus haut ...
Alternativement, les compos Indy viennent avec une nouvelle classe qui permet de simplifier l' envoi de mails: TIdMessageBuilder !
A+
8 oct. 2011 à 17:11
donc Mauricio, si par gentillesse tu testes mon code, tu risques aussi de ne pas constater ce que je vois!
Du coup je suis allé voir directement chez le postmaster et non plus dans le gestionnaire de messagerier, et chez les deux postmaster que je regarde je n'y ai pas trouvé non plus la même chose.
a la poste.net, bien qu'un pièce jointe soit annoncée dans la corbeille attachée au mail envoyé, quand on ouvre celui-ci on n'y trouve ni le message, ni la pièce jointe.
chez gmail, par contre on trouve à la fois le message et la pièce jointe, pas avec une présentation super mais enfin ils y sont.
On a donc à faire à une situation où il semblerait que les différents intervenants interprètent la norme MIME comme ils l'entendent!
En gros il y a trois intervenants: Indy qui est chargé de coder, le postmaster qui fait ce qu'il en veut, et le gestionnaire de messagerie qui en fait aussi ce qu'il en veut.
comme mon intention était de diffuser aux différents joueurs sur notre site qui ont tous des postmasters différents et des gestionnaires itou, je me vois mal parti!
Il doit bien y avoir une solution, car on reçoit bien ce type de mail, mais laquelle?
7 oct. 2011 à 19:19
j'ai pourtant fait le plus simple possible, une petite page html avec une image.
J'ai soit le texte si je ne mets pas le TIdAttachmentfile, soit l'image, mais pas les deux!
mon code:
VAR
emailAddress: string;
smtp: TIdSMTP;
mess: TIdMessage;
HtmlPart: Integer; //Indice de l' objet TIdText avec le corps en HTML, ça va permettre de lier un autre objet à cet TidText.
PlainTextParentPart: Integer; // ParentPart que l' on va mettre pour l' objet contenant le corps en plain/text.
HtmlParentPart: Integer; // ParentPart que l' on va mettre pour l' objet contenant le corps en HTML.
idTexto : TIdText;
const
TextHTML='<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Test</title>'
+'</head>Ceci est un essai.'
+'</html>';
begin
smtp:= TIdSMTP.create;
mess:= TIdMessage.Create;
smtp.Port := 25;
smtp.Username:= 'Gerard';
smtp.Password:= 'PassWord';
smtp.Host := 'smtp.gmail.com';
smtp.Connect;
with TIdText.Create(mess.MessageParts, Nil) do
begin
ContentType := 'multipart/alternative';
end;
// Cet objet a le code 0 (part), donc on informe les variables pour faire la liaison plus tard:
HtmlParentPart := 0;
PlainTextParentPart := 0;
// Corps au format HTML :
idTexto := TIdText.Create(mess.MessageParts, Nil);
idTexto.Body.Text := TextHTML;
idTexto.ContentType := 'text/html';
idTexto.ParentPart := HtmlParentPart;
// Corps au format Plain-Text :
idTexto := TIdText.Create(mess.MessageParts, Nil);
idTexto.Body.Text := 'Ceci est un essai.';
idTexto.ContentType := 'text/plain';
idTexto.ParentPart := PlainTextParentPart;
{with TIdAttachmentFile.Create(Mess.MessageParts, 'C:\Bridgez\Web Server\Relance\RoadMap.jpg') do
Begin
ContentID:= 'RoadMap';
contentType:= 'image/jpeg';
ParentPart := HtmlParentPart;
FileName:= 'RoadMap.jpg';
End; }
mess.From.Text := 'Bridgez';
mess.Subject := 'Test HTML'; //;
mess.Recipients.EMailAddresses := emailAddress;
mess.ContentType := 'multipart/related; type="text/html"';
if smtp.Connected then
smtp.Send(mess);
end;
Merci de ton aide en tout cas!
7 oct. 2011 à 12:09
comme explique ci-dessu:
Le problème est qu' il faut correctement définir:
- la propriété ContentType du compo TIdMessage et de chaque objet (TIdText par exemple) inclu dans notre TIdMessage.
- la propriété ContentType/FileName/ContentID/ParentPart de l' objet TIdAttachmentFile.
- la propriété ContentType/ParentPart de l' objet TIdText.
Je pense que ton problème vient de la propriété ContentType du compo TIdMessage:
idMsg.ContentType := xxx;
En effet, selon que tu aies du Html ou/et du texte simple alternatif ou/et des anexes ou/et des images embouties, il faut définir correctement la propriété idMsg.ContentType car sinon certains éléments peuvent être cachés.
A+
7 oct. 2011 à 11:56
a chaque fois que j'envoie le mail, je reçois la page Html sans les images qui devraient y être rattachées, (lorsque je ne mets aucun TidAttachmentFile) mais aussitôt que j'y mets un attachment, je ne reçois que celui-ci, et pas la page html dans laquelle il devrait se trouver.
j'ai pas mal tourné autour mais je n'y suis toujours pas arrivé.
voilà la façon dont j'ajoute les attachment: c'est peutêtre là que vient le problème?
with TIdAttachmentFile.Create(Mess.MessageParts, 'C:\Bridgez\Web Server\Relance\RoadMap.jpg') do
Begin
ContentID:= 'RoadMap';
contentType:= 'image/jpeg';
ParentPart := HtmlParentPart;
FileName:= 'RoadMap.jpg';
End;
J'ai essayé tous les type de MailContent, rien n'a changé....
11 janv. 2008 à 20:42
Oui oui intéressant..mais maintenant, il faut faire la synthèse entre le source de Francky et le tien !
et il faut du temps..
11 janv. 2008 à 20:04
Oué oué je fais ma pub ^^. Bien comme ca Cantador comprendra l'expression "créer plus intiment ces mails" lol.
c'est surtout tes 11 points d'explications complémentaires que tu as gentiment fournis qui ont ébloui le forum.
11 janv. 2008 à 10:09
A+
11 janv. 2008 à 10:07
désolé mais la phrase n' a pas été traduite, d' ailleurs, elle ne devrait même pas être lá étant donné que c' est un commentaire juste pour mon programme d' oú est tiré le code(Bonne traduc Cari). Cela veut dire que mon programme mail envoie toujours le texte au format simple comme alternative, donc mon mail à envoyer ne sera jamais de ce type, je répète: dans mon cas biensûr ...
Ça me gène pas que vous fassiez votre pub, d' ailleurs, ça m' interesse et je vais regarder cela plus tard ...
A+
10 janv. 2008 à 22:27
Ca signifie:
« Nous n'utilisons pas ce type parce que nous utilisons toujours le format texte dans nos mails ».
Enfin... sous contrôle de MAURICIO qui rectifiera si nécessaire.
10 janv. 2008 à 22:05
Encore un bon code [Made by Mauricio].
Mais, qu'est-ce que signifie donc : "Não usamos este tipo porque mandamos sempre o mail em formato texto ..." ?
J'avoue que j'ai la flemme de (faire) traduire cette phrase :(
10 janv. 2008 à 16:58
c' est ma 3ème source je crois sur les compos Indy concernant les mails, je traite les problèmes que j' ai rencontré afin d' en faire bénéficier les membres ...
C' est sûr que Billou, bem maintenant qu' il a fait une console potable, bem il veut plus bosser lol ...
Les mauvaises langues diront que c' est parce qu' il en a marre de faire le show deavnt des milliers de personnes pour présenter des produits qui s' autodétruisent tout seul (lá je pense surtout à la XBox360).
A+
10 janv. 2008 à 16:42
-On ne pourra bientôt plus dire « chez Billou »... ;)
10 janv. 2008 à 16:35
Je n'ai pas de courrier à envoyer pour le moment... :)
Mais sûr que ton tuto me sera utile un jour et que je m'y plongerai en premier.
Merci d'avance.