L'envoi d'e-mail à l'aide de Smtp.mail.microsoftonline.com
Le contexte:
Nous sommes une petite entreprise qui ne dispose pas d'un Serveur Exchange (ou quelqu'un dédié à cela), mais nous avons encore besoin d'avoir/envoyer des e-mails.
Nous avons décidé d'utiliser Microsoft Online Services (MOS)
L'Objectif:
Nous avons un serveur web (Windows Server 2003 R2 avec IIS 6.0) et ont déployé une C# ASP.Net MCV application.
L'application web a besoin d'envoyer des mails à chaque fois qu'un utilisateur crée un compte.
Selon la la documentation nous avons besoin pour utiliser le port (587) et assurez-vous que la Sécurité de Couche Transport (TLS) activer. En outre, l'adresse utilisée doit être de type “Autoritaire” qui c'est lorsque je double-vérifier via le Microsoft En Ligne Le Centre D'Administration
Le code:
Le code C# j'ai devrait être trivial et est la suivante:
SmtpClient server = new SmtpClient("Smtp.mail.microsoftonline.com");
server.Port = 587;
server.EnableSsl = true;
server.Credentials = new System.Net.NetworkCredential("[email protected]", "123abc");
server.UseDefaultCredentials = false;
MailMessage mail = new MailMessage();
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
mail.Subject = "test subject";
mail.Body = "this is my message body";
mail.IsBodyHtml = true;
try
{
server.Send(mail);
}
catch (Exception ex)
{
throw ex;
}
L'erreur:
J'ai créé une simple application winform avec le code ci-dessus pour tester l'envoi d'e-mails...
J'ai testé l'application winform en local sur mon ordinateur (Windows XP) et sur le Serveur.
Dans les deux tenter, je reçois le message d'erreur suivant:
Le serveur SMTP nécessite une connexion sécurisée ou le client n'est pas authentifié. La réponse du serveur est: 5.7.1 le Client n'est pas authentifié.
Après Googler pour un certain temps, je n'ai toujours pas trouvé la raison pour laquelle...] En outre, la plupart des réponses que j'ai trouvé sont de faire référence à la Console de Gestion Exchange qui nous semblent ne pas avoir (ou installé) donc pourquoi nous sommes à l'aide de Microsoft Online Services...
Questions:
1) en tant Que client de paiement de MOS, ma première idée est que je ne devrais pas avoir à installer (ou ont) une Console de Gestion Exchange sur notre serveur...en fait, ce devrait être complètement hors de propos dans le but de réaliser ma tâche.
2) j'ai aussi essayé activation TLS à l'intérieur de notre IIS 6.0, mais en vain...
3) Nous sommes à saisir les pailles ici parce que ce qui nous semble ne ressemble à quelque chose incroyablement banal...
4) Doit-on simplement abandonner l'idée d'utiliser des MOS du serveur SMTP et en utiliser un autre? Tels que Gmail ? Si oui...alors pourquoi s'embêter à payer une redevance mensuelle pour les MOS?
Si quelqu'un a toute aide/conseils qui peuvent m'aider à faire la lumière sur cela, ce serait génial!
Sincèrement
Vince
WOW...je crois que nous avons trouvé la coupable!!!
En commentant cette ligne de code:
//server.UseDefaultCredentials = false;
Tout a commencé à travailler!
Je suis maintenant en mesure d'envoyer des e-mails à l'intérieur et à l'extérieur de notre domaine...
Ce qui me énigmes le plus, c'est que, selon la documentation, la valeur par défaut de cette UseDefaultCredentials
propriété est définie à faux
Donc...quand je le paramétrer manuellement à faux il ne fonctionne pas, mais quand je commente la ligne (ce qui est également mis à false en raison de sa valeur par défaut), il fonctionne!
Si c'est un problème connu ou si quelqu'un a une réponse à ça, je serais curieux de savoir!
Comment Sécurité de la Couche Transport (TLS) activer ?
OriginalL'auteur Vlince | 2011-07-11
Vous devez vous connecter pour publier un commentaire.
à la recherche dans le Réflecteur sur UseDefaultCredentials de la propriété, vous pouvez voir qu'il modifie également le trasnport.Les informations d'identification de la valeur, de sorte que lorsque vous avez appelé cette propriété avec une valeur fausse, il a changé le transport des informations d'identification à la valeur null.
le problème, c'est que vous avez appelé cette propriété après la mise à l'identification de la ligne, avant que,
il a annulé les informations d'identification.
donc la ligne en bas, à ne pas définir les informations d'identification et d'appeler cette propriété afterwise.
OriginalL'auteur Ran Mitelman
vous pouvez essayer cet exemple
Bye
OriginalL'auteur Carmelo La Monica
5.7.1 n'est pas un problème d'authentification, mais un relais en question. Afin d'empêcher une personne d'utiliser votre serveur (ou compte, selon le cas peut être) le serveur smtp est configuré pour autoriser uniquement de messagerie pour les utilisateurs en dehors de votre nom de domaine si elle est à venir à partir d'une autorité de l'adresse. Vérifiez que l'adresse que vous avez indiquée ici
est le même que celui que vous authentifier en tant que. Aussi, assurez-vous que le domaine de l'adresse de la liste est dans l'autorité liste des domaines.
OriginalL'auteur Mitch
Ce qui a fonctionné pour moi a été que le mec a suggéré Envoyer par e-mail SMTP à l'aide de Système.Net.Mail via Exchange Online (Office 365) , sur l'évolution de l'e-mail "" de l'adresse pour être le même que le nom de connexion de l'stmp adresse
ET
faire ce que Vince a suggéré à la fin L'envoi d'e-mail à l'aide de Smtp.mail.microsoftonline.com pour commenter "smtpClient.UseDefaultCredentials = false;"
OriginalL'auteur avidgamer