SMTP-authenticatie inschakelen met CDOSYS (Systeem.Web.Mail) (Nederlands (Dutch))

SMTP-authenticatie inschakelen met CDOSYS (Systeem.Web.Mail)

Friday, 20 February 2004

//

2 minute read

Een van de meest voorkomende problemen met het gebruik CDOSYS (die de onderliggende klasse is die wordt gebruikt door System.Web.Mail) is het ontbreken van authenticatie voor het verzenden van e-mail via SMTP, Darren Jefford een methode geplaatst Om dit te doen, heb ik het hieronder weergegeven omdat het momenteel is gehost op GotDOtNwet en dus kan verdwijnen op een bepaald punt:

Systeem.Web.Mail en Authenticatie

Onlangs kwam er een vraag over het versturen van e-mail van .NET, System.Web.Mail biedt een leuke MailMessage en SmtpMail klasse die de truc doet.

De lessen zijn een wrapper over de CDOSYSfunctionaliteit die al een tijdje bestaat, en veel mooier zijn dan de eerder clunky CDOSYS interface:)

Het is echt rechttoe rechtaan om een mail te sturen:

System.Web.Mail.MailMessage msg = new System.Web.Mail.MailMessage(); msg.Subject = "Testing";msg.Body = "Hello World";msg.Van = "[email protected] ";msg.To = " [email protected] ";

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

Maar toen ik het testte tegen een Exchange Server weigerde het te verzenden, en deze fout terug te geven:

System.Runtime.InteropServices.COMException (0x8004020E): De server heeft het adres van de afzender afgewezen. Het antwoord van de server was: 454 5.7.3 Opdrachtgever heeft geen toestemming om mail naar deze server te sturen.

Standaard (en verstandig) Exchange staat niet toe dat niet-geauthentificeerde gebruikers e-mail verzenden via SMTP om spammers te voorkomen, enz. Om een zeer lang verhaal af te snijden, wordt de SmtpMail-klasse niet behandeld als authenticatie naar de Exchange-server, wat betekent dat je de klasse niet kunt gebruiken in de meest veilige scenario's.

Na veel graven vond ik dat CDOSYS doethebben authenticatie code zoals je zou verwachten, maar de MailMessage of SmtpMail klasse niet bloot geen manier om het aan te zetten. Na een beetje meer graven vond ik dat de Everett (.NET Framework 1.1) team realiseerde dit en voegde een nieuwe eigenschap genaamd Fields, die als je kunt zieontbreekt enige documentatie;-)

Na verder onderzoek heb ik ontdekt dat je je kunt authenticeren tegen een server, als je versie 1.1 van het kader hebt, en dit is de regel die je moet toevoegen aan de bovenstaande code:

msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate,"2);

Wanneer de 2 NTLM specificeert, 1 voor basis, 0 voor geen (de standaard)

U kunt natuurlijk ook het configureren van de myriadvan andere configuratieopties via deze Fields-collectie

Ik voel een MSDN HOWTO artikel komen, en misschien polietly vragen om een aantal MSDN documentatie te uploaden!:-)

Finding related posts...
logo

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