L'envoi de mail peut se faire avec IIS en local, à condition que le composant Serveur SMTP soit installé (voir panneau de configuration - ajout/supp de programmes - ajout/suppression de composants Windows, ensuite "IIS" puis vérifier que "service SMTP" est cochée).
J'ai créé ici une fonction SendMail qui fait le travail.
Je précise qu'il faut ajouter :
using System.Net.Mail;
(Avant l'envoi de mail se fesait en utilisant avec System.Web.Mail, qui est à present obsolète).
public void SendMail()
{
//Déclaration du MailMessage
MailMessage mail = new MailMessage();
//Affectation des adresses mail
//emetteur(email, nom)
mail.From = new MailAddress("from@domain.com", "Sanaa");
//destinataire
mail.To.Add("to@domain.com");
//objet du mail
mail.Subject = "mail test";
//corps du mail
mail.Body = "ceci est le corps du message.";
//envoi du message
SmtpClient smtp = new SmtpClient("localhost");
smtp.Send(mail);
}
Si tout se passe bien, le mail est envoyé sans problème!
Erreurs possibles et solutions:
En ce qui me concerne, ça ne pas marché du 1er coup.. j'ai eu l'erreur suivante:
5.7.1 Unable to relay for to@domain.com
j'ai utilisé une adresse mail valide pourtant. la solution est la suivante:
- ouvrir IIS
- click droit sur "serveur virtuel SMTP par defaut" - propriétés
- dans l'onglet "Accès", cliquez sur le boutton "relais" (relay)
- assurez vous que 127.0.0.1 est ajouté et autorisé (granted). Si ce n'est pas le cas ajoutez le. Votre fenêtre devrait ressembler à ceci:
Mise à jour - 18 mai 2008:
Les paramètres d'envoi (adresse du serveur SMTP, nom d'utilisateur et mot de passe) peuvent être spécifiés dans le code de ma manière suivante:
public void SendMail()
{
//Déclaration du MailMessage
MailMessage mail = new MailMessage();
//Affectation des adresses mail
//emetteur(email, nom)
mail.From = new MailAddress("emetteur@domaine.com", "nom emetteur");
//destinataire
mail.To.Add("destinataire@domaine.com");
//objet du mail
mail.Subject = "mail test";
//corps du mail
mail.Body = "ceci est le corps du message.";
//envoi du message
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.domaine.com";
smtp.Credentials = new NetworkCredential("emetteur@domaine.com", "motdepasse");
smtp.Send(mail);
}
Vos commentaires sont les bienvenus.