OVH Cloud OVH Cloud

PB d envoie de mail

7 réponses
Avatar
Philippe Cazaux-Moutou
Bonjour,

je fais ca

toot.StartInfo.FileName = @"mailto:" + sDest +
"?Subject=" + sSujet +
"&Body=<html><Body>" + "N° de commande : <b>" + "" + "</b>"
+
"<br>Nom : <b>" + "" + "</b>" +
"<br>Prénom : <b>" + "" + "</b><br></Body></html>";
toot.Start();


Avec Thunderbird, le corps du mail est bien formaté
Mais avec Outlook ca donne ca



<html><Body>N° de commande : <b></b><br>Nom : <b></b><br>Prénom :
<b></b><br></Body></html>
Comment regler ca ?

7 réponses

Avatar
Fred
Dans : news:447c6922$0$19699$,
Philippe Cazaux-Moutou disait :
Bonjour,



Bonsoir,

je fais ca

toot.StartInfo.FileName = @"mailto:" + sDest +
"?Subject=" + sSujet +
"&Body=<html><Body>" + "N° de commande : <b>" + "" +
"</b>" +
"<br>Nom : <b>" + "" + "</b>" +
"<br>Prénom : <b>" + "" + "</b><br></Body></html>";
toot.Start();


Avec Thunderbird, le corps du mail est bien formaté
Mais avec Outlook ca donne ca



Passe plutôt par les classes dédiées du framework 2.0(il y a maintenant
tout ce qu'il faut)
Parce que là, tu vas donner des boutons à ceux qui pondent les rfc
concernant les messages internet ! ;-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Philippe Cazaux-Moutou
>Passe plutôt par les classes dédiées du framework 2.0(il y a maintenant
tout ce qu'il faut)



helas etant débutant, je n ai pas la maitrise, as tu un exemple, ce que je
veux, c est juste passer ca et que ca m ouvre Outlook pour que je puisse
completer le mail


"Fred" a écrit dans le message de news:

Dans : news:447c6922$0$19699$,
Philippe Cazaux-Moutou disait :
Bonjour,



Bonsoir,

je fais ca

toot.StartInfo.FileName = @"mailto:" + sDest +
"?Subject=" + sSujet +
"&Body=<html><Body>" + "N° de commande : <b>" + "" +
"</b>" +
"<br>Nom : <b>" + "" + "</b>" +
"<br>Prénom : <b>" + "" + "</b><br></Body></html>";
toot.Start();


Avec Thunderbird, le corps du mail est bien formaté
Mais avec Outlook ca donne ca



Passe plutôt par les classes dédiées du framework 2.0(il y a maintenant
tout ce qu'il faut)
Parce que là, tu vas donner des boutons à ceux qui pondent les rfc
concernant les messages internet ! ;-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Fred
Dans : news:447c99c8$0$21306$,
Philippe Cazaux-Moutou disait :
Passe plutôt par les classes dédiées du framework 2.0(il y a
maintenant tout ce qu'il faut)



helas etant débutant, je n ai pas la maitrise, as tu un exemple, ce
que je veux, c est juste passer ca et que ca m ouvre Outlook pour que
je puisse completer le mail



Le problème avec le mailto, c'est que cela va te générer un mail dont le
format dépend du paramétrage par défaut de ton logiciel de courrier par
défaut.
Le texte de la partie body est interprétée comme du texte (pas comme du
html). Il sera envoyé comme du texte brut ou en html mais le résultat
que tu obtiens avec Outlook me paraît normal. Disons que si tu écris <b>
dans le body, il sera envoyé comme <b> si ton logiciel envoie en texte
brut et comme &lt;b&gt; si ton logiciel envoie du html, c'est même un
peu plus compliqué car en html, le mail est composé souvent de plusieurs
parties dont l'une en texte brut et l'autre en html.

Mais je n'avais pas vraiment bien saisi que tu voulais modifier le mail.
Le plus simple est sans doute alors ta solution mais en spécifiant
uniquement du texte dans la partie Body. Sinon il faut que tu gères
l'édition html (l'objet webbrowser sait faire cela) et que tu composes
le message avec les classes de System.Net.Mail

Je n'ai pas d'exemple perso sous la main (je ne suis pas depuis assez
longtemps sur le framework 2.0) mais tu as un bout de code très
intéressant à ce sujet dans la MSDN dans l'aide de la propriété
AlternateViews de la classe System.Net.MailMessage

Mais bon. Reste le problème de l'édition de ce que tu veux envoyer.
Pourquoi pas un petit formulaire ? Il semble que tu aies juste à
compléter 3 champs sans formatage particulier (dans les champs eux-même)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Philippe Cazaux-Moutou
Merci de ces précisions

a++

"Fred" a écrit dans le message de news:

Dans : news:447c99c8$0$21306$,
Philippe Cazaux-Moutou disait :
Passe plutôt par les classes dédiées du framework 2.0(il y a
maintenant tout ce qu'il faut)



helas etant débutant, je n ai pas la maitrise, as tu un exemple, ce
que je veux, c est juste passer ca et que ca m ouvre Outlook pour que
je puisse completer le mail



Le problème avec le mailto, c'est que cela va te générer un mail dont le
format dépend du paramétrage par défaut de ton logiciel de courrier par
défaut.
Le texte de la partie body est interprétée comme du texte (pas comme du
html). Il sera envoyé comme du texte brut ou en html mais le résultat que
tu obtiens avec Outlook me paraît normal. Disons que si tu écris <b> dans
le body, il sera envoyé comme <b> si ton logiciel envoie en texte brut et
comme &lt;b&gt; si ton logiciel envoie du html, c'est même un peu plus
compliqué car en html, le mail est composé souvent de plusieurs parties
dont l'une en texte brut et l'autre en html.

Mais je n'avais pas vraiment bien saisi que tu voulais modifier le mail.
Le plus simple est sans doute alors ta solution mais en spécifiant
uniquement du texte dans la partie Body. Sinon il faut que tu gères
l'édition html (l'objet webbrowser sait faire cela) et que tu composes le
message avec les classes de System.Net.Mail

Je n'ai pas d'exemple perso sous la main (je ne suis pas depuis assez
longtemps sur le framework 2.0) mais tu as un bout de code très
intéressant à ce sujet dans la MSDN dans l'aide de la propriété
AlternateViews de la classe System.Net.MailMessage

Mais bon. Reste le problème de l'édition de ce que tu veux envoyer.
Pourquoi pas un petit formulaire ? Il semble que tu aies juste à compléter
3 champs sans formatage particulier (dans les champs eux-même)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
François
C'est peut-être parcequ'il faut préciser que le corps du mail est en HTML.
Voilà un exemple de code pour envoyer un mail avec la classe MailMessage :

string strFrom = "";
string strTo = "";
MailMessage mailMsg = new MailMessage(strFrom, strTo);
mailMsg.Subject = "Essai de mail depuis C#";
mailMsg.Body = "<html><body>texte en html</body></html>";
mailMsg.IsBodyHtml = true;

il suffit ensuite d'envoyer le message avec la classe SmtpClient.

François.
Avatar
Lyny
Voici un exemple intéressant MAIS l'aspect HTML ne semble pas fonctionner!
Amuses toi bien :)
Alain
namespace Examples.SmptExamples.Async

{

public class ExempleEnvoisEmail //SimpleAsynchronousExample

{

static System.Boolean MailSent = false;

// Fonction de retour de message pour l'envois de courriel

public static void SendCompletedCallback(object sender,
System.ComponentModel.AsyncCompletedEventArgs e)

{

// Get the unique identifier for this asynchronous operation.

System.String token = (System.String)e.UserState;

if (e.Cancelled) { System.Console.WriteLine("[{0}] Transmission annul,.",
token); }

if (e.Error != null) { System.Console.WriteLine("[{0}] {1}", token,
e.Error.ToString()); }

else

{

System.String msg = "Message transmit: " + e.UserState.ToString() + " (" +
e.ToString() + ")";

System.Console.WriteLine(msg);

}

MailSent = true;

}

/// <summary> Fonction qui envois un courriel en une seule ligne.

/// </summary>

/// <param name="SMTPClient">Client SMTP: la boite à malle
électronique</param>

/// <param name="FromName">Nom de l'envoyeur</param>

/// <param name="FromAddress">Adresse courriel de l'envoyeur</param>

/// <param name="ToAddress">Adresse courriel de destination</param>

/// <param name="Subject">Sujet du courriel</param>

/// <param name="Message">Corps du message</param>

public static void SendEmail(

System.String SMTPClient, // Client SMTP: la boite à malle électronique

System.String FromName, // Nom de l'envoyeur

System.String FromAddress, // Adresse courriel de l'envoyeur

System.String ToAddress, // Adresse courriel de destination

System.String Subject, // Sujet du courriel

System.String MessageBody) // Corps du message

{

try

{

// Requis, le serveur SMTP.

System.Net.Mail.SmtpClient client = new
System.Net.Mail.SmtpClient(SMTPClient); // Exemple: pop.videotron.ca

// Nom de l'envoyeur

System.Net.Mail.MailAddress from = new
System.Net.Mail.MailAddress(FromAddress, FromName,
System.Text.Encoding.UTF8);

// Nom du destinataire.

System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(ToAddress);

// D,finition du message

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(from,
to);

message.Body = MessageBody;

message.BodyEncoding = System.Text.Encoding.UTF8;

message.Subject = Subject;

message.SubjectEncoding = System.Text.Encoding.UTF8;

// D,terminer la m,thode d'appel pour la r,ponse de l'envois. (called back)

client.SendCompleted += new
System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);

// Token de confirmation d'envois de courriel

System.String userState = "Confirmation d'envois.";

client.SendAsync(message, userState);

System.Console.WriteLine("Transmission du message en cours... ");

// Clean up.

while (MailSent == false)

{

// Attendre un peu

//System.Windows.Forms.DoEvents(); // Pas accessible en "Command Line"

System.Threading.Thread.Sleep(100);

}

message.Dispose();

System.Console.WriteLine("Transmission du message terminé.");

}

catch (System.Exception ex)

{

System.Console.WriteLine("Erreur lors de la transmission du message: " +
ex.Message);

}

}

public static void Main(string[] args)

{

System.String answer;

System.String SmtpServer = "pop.videotron.ca"; // Met ton serveur SMTP

System.String FromName = "Ton Nom";

System.String FromAddress = "";

System.String ToAddress = "";

System.String Subject = "Test de transmission";

System.String MessageBody; // Corps du message

//if (args.Length != 1)

//{

// System.Console.WriteLine("Il faut un paramètre: le client SMTP. (Exemple:
pop.videotron.ca)");

// answer = System.Console.ReadLine();

// return;

//}

//SmtpServer = args[0];

// Reset pour l'envois d'un courriel.

MailSent = false;

MessageBody = "Test de transmission - Step 1 - Message body
XXXXXXXXXXXXXXXXXXXXXX";

SendEmail(SmtpServer, FromName, FromAddress, ToAddress, Subject,
MessageBody);

// Reset puis envois d'un courriel.

MailSent = false;

MessageBody = "<html><body>texte en html</body></html>";

SendEmail(SmtpServer, FromName, FromAddress, ToAddress, Subject,
MessageBody);

// Reset puis envois d'un courriel.

MailSent = false;

MessageBody = "<html><head><title>Alain Test
Titre</title></head><body>Test</body></html>";

SendEmail(SmtpServer, FromName, FromAddress, ToAddress, Subject,
MessageBody);

System.Console.WriteLine("L'envois de courriel est terminé.");

answer = System.Console.ReadLine();

}

}

}


"François" a écrit dans le message de
news:
C'est peut-être parcequ'il faut préciser que le corps du mail est en HTML.
Voilà un exemple de code pour envoyer un mail avec la classe MailMessage :

string strFrom = "";
string strTo = "";
MailMessage mailMsg = new MailMessage(strFrom, strTo);
mailMsg.Subject = "Essai de mail depuis C#";
mailMsg.Body = "<html><body>texte en html</body></html>";
mailMsg.IsBodyHtml = true;

il suffit ensuite d'envoyer le message avec la classe SmtpClient.

François.




Avatar
Lyny
J'ai trouvé ce qui manquait:

message.IsBodyHtml = true;
Maintenant ca fonctionne bien en HTML.

Alain


Note: a placer juste après les 4 lignes suivantes:

message.Body = MessageBody;

message.BodyEncoding = System.Text.Encoding.UTF8;

message.Subject = Subject;

message.SubjectEncoding = System.Text.Encoding.UTF8;

// Voilà, ici...

message.IsBodyHtml = true;


"François" a écrit dans le message de
news:
C'est peut-être parcequ'il faut préciser que le corps du mail est en HTML.
Voilà un exemple de code pour envoyer un mail avec la classe MailMessage :

string strFrom = "";
string strTo = "";
MailMessage mailMsg = new MailMessage(strFrom, strTo);
mailMsg.Subject = "Essai de mail depuis C#";
mailMsg.Body = "<html><body>texte en html</body></html>";
mailMsg.IsBodyHtml = true;

il suffit ensuite d'envoyer le message avec la classe SmtpClient.

François.