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:
Ä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! :-)
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.