Je rencontre une erreur mystérieuse (à moi) lors de l'envoi d'e-mails via un serveur SMTP à partir d'une application Web ASP.NET. Je reçois la fameuse erreur "impossible de relayer pour [email protected]". Ce qui est mystérieux pour moi, c'est que lorsque je coupe et colle exactement le même code qui envoie l'e-mail dans une application .NET Windows Forms habituelle, envoyer l'e-mail avec cette application, tout fonctionne très bien. Cela m'a fait penser que le problème est peut-être que l'application ASP.NET s'exécute en tant que SERVICE RÉSEAU pendant que l'application Windows Forms s'exécute sur un compte d'utilisateur de domaine, mais il se trouve que j'ai une autre application ASP.NET Serveur SMTP s'exécutant sous SERVEUR DE RÉSEAU sur le même IIS, et cette application ne rencontre pas ce problème.Pourquoi MailMessage est-il envoyé à n'importe quelle adresse à partir de l'application Windows Forms, mais pas à partir de l'application ASP.NET, lorsque les deux utilisent le même serveur SMTP?
J'ai également essayé d'envoyer des e-mails manuellement via le serveur SMTP en téléservant le serveur SMTP sur le port 25 et en exécutant le protocole SMTP manuellement, et tout fonctionne correctement. Le serveur SMTP n'est configuré avec aucune sorte d'authentification ou SSL. Un autre fait mystérieux est que l'application ASP.NET peut envoyer des e-mails à partir d'une adresse dans le même domaine à une adresse de messagerie dans le même domaine, mais pas à une adresse en dehors du domaine. Mais l'application Windows Forms, qui utilise exactement le même code, peut envoyer des e-mails de n'importe quelle adresse à n'importe quelle adresse à l'intérieur et à l'extérieur du domaine.
Donc, pour résumer:
- L'application ASP.NET peut envoyer e-mails à partir des adresses dans le domaine à des adresses dans le domaine, mais pas à des adresses en dehors du domaine .
- Une application Windows Forms exécutant le même code sur le même ordinateur peut envoyer des e-mails de N'IMPORTE quelle adresse à n'importe quelle adresse.
- Une autre application ASP.NET sur le même IIS fonctionnant sous le même compte (service réseau) peut envoyer e-mails en utilisant la même adresse SMTP de QUELQUE serveur à toute adresse. Il n'y a pas d'authentification configurée sur le serveur SMTP.
- Tant l'application ASP.NET et le application Windows Forms utilise la classe System.Net.Mail.SmtpClient d'envoyer un System.Net.Mail.MailMessage.
Le code qui envoie le massage e-mail est:
private void button1_Click(object sender, EventArgs e)
{
MailMessage mesasge = new MailMessage(txtFrom.Text, txtTo.Text, "Test mail", txtBody.Text);
SmtpClient client = new SmtpClient();
if (!(string.IsNullOrEmpty(txtUserName.Text))) //Is false since txtUserName.Text is empty
client.Credentials = new System.Net.NetworkCredential(txtUserName.Text, txtPassword.Text);
client.EnableSsl = false;
client.Host = txtServer.Text;
client.Port = 25;
try
{
client.Send(mesasge);
}
catch (Exception ex)
{
txtResponse.Text = ex.Message;
}
}
Pour autant que je peux comprendre, cela devrait être une question de configuration plutôt que des problèmes de codage. Quelqu'un at-il une idée de ce que pourrait être le problème, et peut-être comment cela pourrait-il être résolu? Merci!
Au risque de paraître débile, quel serveur smtp utilisez-vous? – ChadT
Avez-vous testé avec le même De l'adresse –
Oui j'ai fait un test en utilisant le même De l'adresse. Malheureusement, je ne sais pas quels sont les serveurs SMTP utilisés. Je parierais sur celui dans IIS thoe .... –