Impossible d'envoyer des courriels à partir du serveur de production à l'aide de c # et gmail

J'ai testé ce code sur mon environnement de développement (Windows 7, Visual Studio 2010) et cela fonctionne à la grille

public static bool SendMail(string to, string subject, string message)
{
    try
    {
        NetworkCredential loginInfo = new NetworkCredential("mylogin","mypassowrd");
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress("mylogin");
        msg.To.Add(new MailAddress(to));
        msg.Subject = subject;
        msg.Body = message;
        msg.IsBodyHtml = true;
        SmtpClient client = new SmtpClient("smtp.gmail.com",587);
        client.EnableSsl = true;
        client.UseDefaultCredentials = false;
        client.Credentials = loginInfo;
        client.Send(msg);

        return true;
    }
    catch (Exception)
    {
        return false;
    }
}

Mais lorsque je le déplace sur mon serveur de production (Windows Server 2008), il ne fonctionne pas. Mon idée initiale était que le pare-feu bloque le port. Je crée donc une règle sortante pour ouvrir le port 587 avec le protocole TCP. Bot ça ne marche pas.

Toute perspicacité sera appréciée.

Merci

1
Merci, c'était am ISA Server. Je viens de créer une règle sur l'ISA et cela fonctionne.
ajouté l'auteur roncansan, source
Bien, au lieu de retourner false ... enregistrez l'exception, postez-la ici et voyons si nous pouvons vous aider
ajouté l'auteur Pleun, source
S'il vous plaît fournir plus d'informations sur pourquoi cela ne fonctionne pas. Avez-vous un message d'erreur?
ajouté l'auteur Anders Abel, source

1 Réponses

Avez-vous vérifié que vous pouvez atteindre le port 587 sur smtp.gmail.com à partir d'un autre outil du serveur? Dans un environnement de production, il est possible de filtrer un port à de nombreux endroits - y compris les pare-feu et les routeurs du réseau et pas uniquement le pare-feu du serveur.

Un moyen de vérifier la connectivité réseau de l'application consiste à essayer d'envoyer un courrier dans votre application tout en exécutant la commande netstat -n sur la console du serveur. Si la connexion à smtp.gmail.com est bloquée en tant que SYN_SENT , aucune connexion TCP n'est établie.

3
ajouté