J'ai une application Web qui s'exécute sur IIS dans le domaine de mon entreprise et est accessible via intranet. J'ai cette application envoyant un email basé sur certaines actions de l'utilisateur. Par exemple, c'est une application d'ordonnancement en partie, donc si une tâche est terminée, un email est envoyé pour avertir les autres utilisateurs de cela.Pourquoi System.Net.Mail fonctionne-t-il dans une partie de mon application Web C# .net, mais pas dans un autre?
Le problème est que l'e-mail fonctionne parfaitement dans certains cas et pas du tout dans d'autres. J'ai une page login.aspx qui envoie des e-mails de rapport lorsque la page est chargée (elle est chargée une fois par jour via le planificateur de tâches Windows) - cela semble toujours fonctionner parfaitement. J'ai une page de mise à jour qui est censée envoyer un courriel lorsque le texte est entré et que le bouton «Mettre à jour» est cliqué - cette opération échouera la plupart du temps. Ces deux tâches utilisent la même méthode statique que j'ai écrite pour envoyer des courriels à l'aide de System.Net.Mail.
J'ai essayé d'utiliser gmail comme serveur SMTP (au lieu de notre serveur interne), et j'obtiens les mêmes résultats. J'ai étudié si le fait d'avoir le service SMTP local en cours d'exécution fait une différence, et cela ne semble pas le cas. En outre, puisque C# est le code côté serveur, ne devrait-il pas seulement importer ce qui fonctionne sur le serveur, et pas le client?
S'il vous plaît aidez-moi à comprendre ce qui est mal! Où devrais-je regarder? Que puis-je essayer?
Voici mon code pour envoyer un courriel.
public static void sendEmail(String[] recipients, String sender, String subject, String body, String[] attachments)
{
MailMessage message;
try
{
message = new MailMessage(sender, recipients[0]);
}
catch (Exception)
{
return;
}
foreach (String s in recipients)
{
if (!message.To.Contains(new MailAddress(s)))
message.To.Add(s);
}
message.From = new MailAddress(sender);
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("PRIVATE.PRIVATE.PRIVATE", 25);
smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtp.UseDefaultCredentials = true;
if (attachments.Count() > 0)
{
foreach (String a in attachments)
{
message.Attachments.Add(new Attachment(a));
}
}
try
{
smtp.Send(message);
}
catch (Exception e)
{
}
}
}
Quelle erreur obtenez-vous lorsque vous envoyez le message? Si le message est envoyé sans erreur mais n'est pas reçu, il peut s'agir d'un filtrage de spam basé sur le contenu du message. –
Veuillez poster le code qui envoie l'email. Sans cela, il est très difficile pour quiconque de vous aider. – Raja
Je comprends son difficile sans code. Mon problème est de savoir quel code inclure. J'ai ajouté la méthode de mailing statique ci-dessous. – Marc