Aktivera SMTP-autentisering med CDOSYS (System.Web.Mail) (Svenska (Swedish))

Aktivera SMTP-autentisering med CDOSYS (System.Web.Mail)

Friday, 20 February 2004

//

2 minute read

Ett av de vanligaste problemen med att använda KOSTNADER (som är den underliggande klass som används av System.Webb.Mail) är avsaknaden av behörighetskontroll för att skicka brev via SMTP, Darren Jefford Ordförande postat en metod För att göra detta, Jag har återgett det nedan eftersom det är för närvarande värd på GotDOtNwet och så kan försvinna någon gång:

System.Web.Mail och behörighetskontroll

En fråga kom upp nyligen om hur man skickar e-post från .NET, System.Web.Mail erbjuder en trevlig MailMessage och SmtpMail klass som gör tricket.

Klasserna är ett omslag över KOSTNADERfunktionalitet som har funnits lite, och är mycket trevligare än den ganska klumpiga CDOSYS gränssnitt :)

Det är verkligen rättframt att skicka ett mail:

System.Web.Mail.MailMessage msg = nytt System.Web.Mail.MailMessage(); msg.Subject = "Testing", msg.Body = "Hej Världen", msg.From = "ditt [email protected] "Msg.För att =" [email protected] ";

System.Web.Mail.SmtpMail.SmtpServer = "YUREXCHANGESERVER";System.Web.Mail.SmtpMail.Send( msg );

Men när jag testade den mot en Exchange Server vägrade den att skicka, returnerar detta fel:

System.Runtime.InteropServices.COMUpception (0x8004020E): Servern avvisade avsändarens adress. Serversvaret var: 454 5.7.3 Klienten har inte behörighet att skicka e-post till servern.

Som standard (och klokt) Exchange tillåter inte oautenticerade användare att skicka e-post via SMTP för att förhindra mot spammare, etc. För att klippa en mycket lång historia skott SmtpMail klassen hanterar inte autentisering till Exchange-servern vilket innebär att du inte kan använda klassen i de flesta säkra scenarier.

Efter en hel del grävande fann jag att CDOSYS görhar autentiseringskod som du skulle förvänta dig, men MailMessage eller SmtpMail klassen inte avslöja något sätt att slå på den. Efter lite mer grävande fann jag att Everett (.NET Framework 1.1) laget insåg detta och lagt till en ny egenskap som heter Fields, som som du kan Där ser du.saknas viss dokumentation ;-)

Så efter ytterligare en undersökning har jag funnit att du kan autentisera mot en server, om du har version 1.1 av ramverket, och detta är raden du måste lägga till i ovanstående kod:

Msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpautenticate",2).

Om de 2 anger NTLM, 1 för basvärde, 0 för ingen (standardvärdet)

Du kan naturligtvis också konfigurera myriadav andra inställningsalternativ via denna fältsamling

Jag känner en MSDN HOWTO artikel kommer på, och kanske politiskt be om några MSDN dokumentation att laddas upp! :-)

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.