Back to "SMTP-varmennuksen mahdollistaminen CDOSYS-järjestelmällä (System.Web.Mail)"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

ASP.NET C# Imported mostlylucidcouk

SMTP-varmennuksen mahdollistaminen CDOSYS-järjestelmällä (System.Web.Mail)

Friday, 20 February 2004

Yksi yleisimpiä ongelmia käytön CDOSYS (mikä on kohde-etuusluokka, jota Järjestelmä.Web.Mail) on se, että SMTP:n kautta lähetetyn postin aitous puuttuu, Darren Jefford lähetetty menetelmä Tätä varten olen toistanut sen alla, koska se on tällä hetkellä GotDotNwetissä ja voi kadota jossain vaiheessa:

Järjestelmä.Web.Mail ja Authentication

Äskettäin tuli esiin kysymys, miten lähettää sähköpostia .NET, System.Web.Mail tarjoaa mukavan MailMessage- ja SmtpMail-kurssin, joka tepsii.

Luokat ovat käärepaperia. CDOSYSToiminnallisuus, joka on ollut olemassa jo jonkin aikaa ja on paljon mukavampi kuin pikemminkin kömpelö CDOSYS-rajapinta :)

On todella suoraviivaista lähettää postia:

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

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

Mutta kun testasin sitä Exchange Serveriä vastaan, se kieltäytyi lähettämästä ja palautti tämän virheen:

Järjestelmä.Runtime.InteropServices.COMExclusion (0x8004020E): Palvelin hylkäsi lähettäjän osoitteen. Palvelimen vastaus oli: 454 5.7.3 Asiakkaalla ei ole lupaa lähettää sähköpostia tälle palvelimelle.

Oletusarvoisesti (ja viisaasti) Vaihto ei salli aitouttamattomien käyttäjien lähettää sähköpostia SMTP:n kautta roskapostittajia vastaan. SmtpMail-luokka ei käsittele tunnistusta Exchange-palvelimelle, mikä tarkoittaa, että luokkaa ei voi käyttää turvallisimmissa skenaarioissa.

Pitkän kaivamisen jälkeen löysin sen CDOSYSin. tekeeOta tunnistautumiskoodi, kuten odottaa voi, mutta MailMessage- tai SmtpMail-kurssi ei paljasta mitään tapaa käynnistää sitä. Vähän kaivamisen jälkeen huomasin, että Everett (.NET Framework 1.1) -tiimi tajusi tämän ja lisäsi uuden kiinteistön nimeltä Fields, joka voi olla mikä tahansa. katsopuuttuu joitakin asiakirjoja ;-)

Joten, joidenkin lisätutkimusten jälkeen olen havainnut, että voit todentaa palvelimen, jos sinulla on kehysversio 1.1, ja tämä on rivi, joka sinun täytyy lisätä yllä olevaan koodiin:

msg.Fields.Add('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate',

Jos 2 kohdassa määritellään NTLM, 1 perusarvoksi, 0 nollaksi (oletusarvo)

Voit tietenkin myös määrittää MUKAANmuista kokoonpanovaihtoehdoista tämän Fields-kokoelman kautta

Minusta tuntuu, että MSDN Howton artikkeli on tulossa, ja ehkäpä poliittisesti pyydän, että joitakin MSDN-dokumentteja ladattaisiin! :-)

logo

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