Je crée une nouvelle application Web ASP.NET qui utilise SMTP pour envoyer un message. Le problème est que le smtp n'a pas été authentifié par celui qui a envoyé le message.
Comment puis-je authentifier SMTP dans mon programme? C # a-t-il une classe qui possède un attribut pour entrer le nom d'utilisateur et le mot de passe?
using System.Net;
using System.Net.Mail;
using(SmtpClient smtpClient = new SmtpClient())
{
var basicCredential = new NetworkCredential("username", "password");
using(MailMessage message = new MailMessage())
{
MailAddress fromAddress = new MailAddress("[email protected]");
smtpClient.Host = "mail.mydomain.com";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = "your subject";
// Set IsBodyHtml to true means you can send HTML email.
message.IsBodyHtml = true;
message.Body = "<h1>your message body</h1>";
message.To.Add("[email protected]");
try
{
smtpClient.Send(message);
}
catch(Exception ex)
{
//Error, could not send the message
Response.Write(ex.Message);
}
}
}
Vous pouvez utiliser le code ci-dessus.
Assurez-vous de définir SmtpClient.Credentials
after appelez SmtpClient.UseDefaultCredentials = false
.
L'ordre est important car le réglage de SmtpClient.UseDefaultCredentials = false
réinitialisera SmtpClient.Credentials
en null.
Définissez la propriété Informations d'identification avant d'envoyer le message.
Pour envoyer un message via TLS/SSL, vous devez définir Ssl de la classe SmtpClient sur true.
string to = "[email protected]";
string from = "[email protected]";
MailMessage message = new MailMessage(from, to);
message.Subject = "Using the new SMTP client.";
message.Body = @"Using this new feature, you can send an e-mail message from an application very easily.";
SmtpClient client = new SmtpClient(server);
// Credentials are necessary if the server requires the client
// to authenticate before it will send e-mail on the client's behalf.
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.Send(message);
Comment envoyez-vous le message?
Les classes de l'espace de noms System.Net.Mail
(ce qui est probablement ce que vous devez utiliser) prennent totalement en charge l'authentification, spécifiée dans Web.config ou utilisant la propriété SmtpClient.Credentials
.
Dans mon cas, même après avoir suivi tout ce qui précède. J'ai dû mettre à niveau mon projet de .net 3.5 à .net 4 pour autoriser notre serveur de messagerie Exchange 2010 interne.