Comment faire pour envoyer des mails en utilisant SmtpClient et DefaultNetworkCredentials à une liste de distribution qui permet seulement aux expéditeurs authentifiés?

Je suis en train d'envoyer des e-mails automatiques d'une application console C# à partir de machines pour les clients de tous sur le même domaine par l'intermédiaire de notre serveur interne Exchange 2007 (à l'aide de SMTP), mais je suis de frapper un problème avec les listes de distribution, qui ne permettent expéditeurs authentifiés. Fondamentalement, les mails que je t'envoie sont à se faire rejeter par l'Échange avec d':

#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##rfc822;[email protected]

Je suis en utilisant System.Net.Mail.SmtpClient et paramètre les informations d'Identification de la propriété à System.Net.CredentialCache.DefaultNetworkCredentials, mais quelque part le long de la ligne, les informations d'identification du compte de l'exécution de ce programme (moi, un utilisateur de domaine valide avec une boîte aux lettres valide) ne sont pas d'être transmis à l'Échange correctement.

Je suis en utilisant System.Net.CredentialCache.DefaultNetworkCredentials parce que je ne veux pas coder en dur un nom d'utilisateur ou le mot de passe (que ce soit dans le code lui-même ou dans toute sorte de fichier de configuration); je veux le processus pour vous authentifier auprès de notre serveur SMTP à l'aide de l'authentification Windows.

Ici est un programme de test, j'ai été utilisé pour reproduire le problème (les noms de domaine ont été anonomized):

using System;
using System.Net.Mail;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            var smtpClient = new SmtpClient
                                 {
                                     Host = "MAIL",
                                     Port = 25,
                                     DeliveryMethod = SmtpDeliveryMethod.Network,
                                     Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
                                 };

            var mailMessage = new MailMessage
                                  {
                                      Body = "Testing",
                                      From = new MailAddress(Environment.UserName + "@example.com"),
                                      Subject = "Testing",
                                      Priority = MailPriority.Normal
                                  };

            mailMessage.To.Add("[email protected]");

            smtpClient.Send(mailMessage);
        }
    }
}

Chaque fois que j'exécute ce que moi-même (encore une fois, je suis un utilisateur valide sur le domaine, avec une boîte aux lettres sur le serveur Exchange), je reçois un non livrable, le message de renvoi de l'Échange avec la réponse:

#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##rfc822;[email protected]

J'ai parlé à notre serveur Exchange admin et il a vu l'erreur suivante à partir du serveur Exchange journal des événements:

Account For Which Logon Failed:
  Security ID: NULL SID
  Account Name: 
  Account Domain: 

Failure Information:
  Failure Reason: Unknown user name or bad password.
  Status:         0xc000006d
  Sub Status:     0xC0000064

Apparemment, ce code d'état, et sous le code d'état traduire:

0xc000006d This is either due to a bad username or authentication information. Usually logged as status code with 0xc0000064 as substatus

0xC0000064 user name does not exist

Donc encore une fois, c'est comme si quelque part le long de la ligne, mes informations d'identification Windows ne sont pas d'être transmises au serveur Exchange, même si je suis réglage de la SmtpClient.Credentials à System.Net.CredentialCache.DefaultNetworkCredentials

Des idées?

Merci d'avance!

merci pour la modification rapide pour nettoyer mon pauvre mise en forme, vous me battre pour le tas 🙂
avez-vous pensé à passer nom d'utilisateur , mot de passe et si il y a un groupe d'individus, il suffit de configurer un compte de messagerie sur votre serveur de messagerie ou IIS et ajouter les emails des personnes qui appartiennent à ce groupe. avez-vous vérifié dans MSDN: Site - msdn.microsoft.com/en-us/library/...
J'espère que vous pouvez suivre mes notes dans les commentaires // le serveur smpt.somedomain.com ok.. le remplacer avec votre serveur

OriginalL'auteur russcollier | 2012-03-02