Back to "Abilitare l'autenticazione SMTP con CDOSYS (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

Abilitare l'autenticazione SMTP con CDOSYS (System.Web.Mail)

Friday, 20 February 2004

Uno dei problemi più comuni con l'uso CDOSYS (che è la classe sottostante utilizzata da System.Web.Mail) è la mancanza di autenticazione per l'invio di posta tramite SMTP, Darren Jefford postato un metodo Per fare questo, l'ho riprodotto qui sotto dal momento che è attualmente ospitato su GotDOtNwet e quindi potrebbe scomparire ad un certo punto:

System.Web.Mail e Autenticazione

Una domanda è venuto recentemente su come inviare e-mail da .NET, System.Web.Mail offre una bella MailMessage e SmtpMail classe che fa il trucco.

Le classi sono un involucro sopra il CDOSYSfunzionalità che è stato intorno per un po ', e sono molto più bello rispetto all'interfaccia CDOSYS piuttosto clunky:)

E 'davvero dritto in avanti per inviare una mail:

System.Web.Mail.MailMessage msg = new System.Web.Mail.MailMessage(); msg.Subject = "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 );

Tuttavia, quando lo stavo testando contro un server Exchange si è rifiutato di inviare, restituendo questo errore:

Sistema.Runtime.InteropServices.COMException (0x8004020E): Il server ha rifiutato l'indirizzo del mittente. La risposta del server è stata: 454 5.7.3 Il client non ha il permesso di inviare email a questo server.

Per impostazione predefinita (e saggiamente) Exchange non consente agli utenti non autenticati di inviare posta via SMTP per prevenire gli spammer, ecc. Per tagliare una storia molto lunga la classe SmtpMail non gestisce l'autenticazione al server Exchange, il che significa che non è possibile utilizzare la classe negli scenari più sicuri.

Dopo un sacco di scavi ho trovato che CDOSYS faavere codice di autenticazione come ci si aspetterebbe, tuttavia la classe MailMessage o SmtpMail non espone alcun modo per attivarlo.Dopo un po 'più di scavo ho scoperto che il team Everett (.NET Framework 1.1) ha realizzato questo e aggiunto una nuova proprietà chiamata Campi, che come è possibile vedimanca qualche documentazione;-)

Quindi, dopo qualche ulteriore indagine ho scoperto che è possibile autenticarsi contro un server, se si dispone della versione 1.1 del framework, e questa è la riga che si deve aggiungere al codice di cui sopra:

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

Se il 2 specifica NTLM, 1 per base, 0 per nessuno (il valore predefinito)

Naturalmente è possibile anche configurare il miriadeCity name (optional, probably does not need a translation)di altre opzioni di configurazione tramite questa collezione di campi

Sento un articolo di MSDN HOWTO in arrivo, e forse polietly chiedere un po 'di documentazione di MSDN da caricare! :-)

logo

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