Comment envoyer mail avec un text gras, italique ou souligné
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
10 janv. 2009 à 22:56
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
12 janv. 2009 à 19:19
Bonjour, j'ai mon programme qui envoi des mails et ça marche assez bien (Delphi 7 / Indy) !
Mon probléme toutefois c'est que le corps de mon message qui est saisi dans un RichEdit1 peut contenir des caracteres en gras, iltalique ou souligné selon le bon vouloir de l'expediteur mais ces caracteres ne sont semble t-il pas pris en compte au moment de l'envoi puisque le destinataire les recois en texte normal.
Je vous joins ci-apres mon code, si quelqu'un peut m'aider à l'améliorer pour prendre en compte ceci je lui en serais bien reconnaissant, merci par avance.
var IdMessage: TIdMessage;
var IdSMTP: TIdSMTP;
var Message: TStrings;
var Destinataire : String;
IdMessage.Subject := Edit5.Text; // OBJET DU MESSAGE
IdMessage.ContentType := 'multipart/alternative'; //Message 'découpé' en plusieurs parties
Message := RichEdit1.Lines; // CORPS DU MESSAGE
//Ici on va créer les différentes parties du message, au cas où le client ne gère pas les messages HTML :
With TIdText.Create(IdMessage.MessageParts, Message) Do
Begin
ContentType := 'text/plain';
// Body.Insert(0, 'Ce message est un message HTML. Configurez votre client de courrier électronique pour le visionner de manière appropriée');
end;
//Ajout du message au format HTML (en supposant que Message contient du HTML) :
with TIdText.Create(IdMessage.MessageParts, Message) do ContentType := 'text/html';
//On passe ensuite à l'envoi du message:
IdSMTP := TIdSMTP.Create(nil) ; //Création dynamique du composant
IdSMTP.Port := StrToInt(form2.edit49.text); //Le PORT SMTP standard...
IdSMTP.Host := Form2.Edit50.Text; //Le SERVEUR SMTP auquel se connecter
//Ensuite on se connecte et on envoit le message, en gérant les erreurs, tant qu'à faire !
Try
Try
IdSMTP.Connect;
IdSMTP.Send(IdMessage);
except
on e: exception do ShowMessage(e.Message);
end;
finally
IdSMTP.Disconnect;
IdSMTP.Free;
IdMessage.Free;
end;
Salut ,
Ca n'a rien de bizarre : Un mail n'est censé contenir que des caractères ASCII.
Voir les charset et le codage en base64 des mails pour solutionner ton problème
Ne mélange pas tout : ca m'étonnerait que ton client pop comprenne les attributs de fonte et de mise en forme de ton RichEdit. Si on permet le html dans les mails c'est bien pour une raison . En ce qui concerne les accents : vérifie que ton client pop est bien configuré et si c'est le cas regarde quel est le type d'encodage utilisé par défaut par Indy : Ca se trouve il n'est pas définit en Base 64 (Le type d' encodage est précisé dans le header des mails que tu recois).
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014 12 janv. 2009 à 00:11
Quand j'envoi un mail de mon appli avec du texte gras, italique, souligné, je le recois en texte normal non seulement sur mon appli mais aussi sur d'autres clients de messagerie que j'ai testé (thunderbird, webmail...), je pense donc que c'est un probleme au niveau de l'envoi pas de la reception.
"Ca m'étonnerait que ton client pop comprenne les attributs de fonte et de mise en forme de ton RichEdit. Si on permet le html dans les mails c'est bien pour une raison"
Par rapport au code que j'ai indiqué ci-avant qu'est-ce que je dois alors ajouter pour que ce soit pris en compte ?
En ce qui concerne les accents : Essaye avec une simple string genre 'éèê' voir ce que cela donne.
Pour la mise en forme : oublie le TRichEdit et tourne toi vers un composant qui permet de formater ton texte en HTML (Par contre va falloir le coder ou casser le porte-monnaie )