15 décembre 2009

INFOPATH : Envoi d’un mail customisé


InfoPath comprend une fonction d’envoi de mail permettant de l’envoi d’un mail simple en se basant sur la connexion Outlook de l’utilisateur (d’ailleurs l’utilisateur ne possède pas obligatoirement Outlook…). En mode Form Services, il est de même possible d’utiliser la classe SPUtility.SendMail(…).

Dans tous les autres cas, cette fonction C# vous permettra d’envoyer un mail aux personnes souhaités (d'ailleurs elle ne sert pas que pour InfoPath):

public static bool SendMail(string To_Mail, string Mail_Title, string Message_Body, string Mail_Model, bool Is_Html)
{
System.Net.Mail.MailMessage smail = new System.Net.Mail.MailMessage();
// on spécifie si notre email est envoyé au format HTML ou Texte.
smail.IsBodyHtml = Is_Html;
// Type d'encodage de  notre message
smail.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");
// Adresse d’envoi en pouvant préciser un alias comme “PAF”
smail.From = new System.Net.Mail.MailAddress("mail@xcess.info", "PAF");
// Possibilité de saisir plusieurs addresse mail en séparant par des “;”
smail.To.Add(new System.Net.Mail.MailAddress(To_Mail));
// Titre,Sujet de l'email
smail.Subject = Mail_Title;

// Utilisation du modèle
if (Mail_Model.ToLower().Contains("placemailhere"))
      smail.Body = Mail_Model.Replace("placemailhere", Message_Body);
else
      smail.Body = Message_Body;

// Specifier l'adresse du serveur SMTP.
System.Net.Mail.SmtpClient Client = new System.Net.Mail.SmtpClient();
Client.Host = 25;
// Envois de l'email.
try
{
      Client.Send(smail);
}
catch
{
      return false;
}
return true;
}

// Appel de la fonction
// Avec un Template (décoration).
xcess.SendMail("toemail@xxx.com", "Mail Subject", "This is the body", "xxx placemailhere xxx", true);
// Sans Template.
xcess.SendMail("toemail@xxx.com", "Mail Subject", "This is the body", "", true);
Et voila, la fonction d’envoi d’un mail SMTP est prêt à l’utiisation…

2 commentaires:

  1. Cette fonction ne marche pas, car elle génère une exception de sécurité :
    "Échec de la demande d'autorisation de type 'System.Net.Mail.SmtpPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
    à System.Security.CodeAccessSecurityEngine.Check"

    RépondreSupprimer
  2. Et pourtant elle fonctionne très bien, elle est testée et approuvée en production chez un client.
    Par contre il se peut que votre serveur SMTP soit configuré pour bloquer les envois par le code!

    RépondreSupprimer