[ hotgal_mr @ 22.03.2005. 13:53 ] @
pozz svima.
kako poslati preko vb (ili c#) i asp.net-a mail korišćenjem smtp servera? Ja sam koristio:
Code:

Mail.SmtpMail.Send(...)


ali ne radi jer ne može da nađe server. Kada iz koda dodam smtp server radi OK. E pitanje je, da li se može poslati poruka bezobzira na smtp server, tj da korisnik na stranici za kontakt ne mora da upisuje svoj smtp server?

Hvalaaaa.
[ mmix @ 22.03.2005. 18:27 ] @
kad saljes mailove iz asp.net aplikacije moras da dobavis pristup SMTP serveru provajdera kod kog hostujes aplikaciju. Taj smtp koristi za slanje, ubaci ga u web.config kao configuration element ili ga jednostavno ubaci u kod. Opcija da korisnik ubaci arbittarno svoj SMTP ti nece uvek raditi u produkciji posto vecina SMTP servera po defaultu zabranjuje relaying mailova.
[ Sundance @ 22.03.2005. 19:30 ] @
HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager -> Default Mail Account

učitaj taj broj u recimo varijablu X. Ukoliko je različit od null otvori:

HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\0000000X -> SMTP Server

A možeš izlistati i SMTP servere za ostale korisničke račune te njih koristiti.
[ mmix @ 22.03.2005. 20:30 ] @
Radi se o ASP.NET aplikaciji. Malo je verovatno da ce ona raditi pod korisnickim accountom za koji na serveru postoji HKEY_CURRENT_USER hive. Sta vise mnogo je verovatnije da taj hive uopste nece ni biti montiran ako worker process bude radio pod LocalSystem accountom.

[ Sundance @ 23.03.2005. 21:19 ] @
Da istina, LocalSystem nema pristup HKCU :) Ali ne mora taj ključ čitati svaki put iz servisa, niti mora iz njega slati mejl...

Nije mi doduše jasno ako acc ima NT AUTHORITY\SYSTEM token, kako može imati ikakva ograničenja? Može loadati drivere ali ne može čitati HKCU, wtf? :)
[ mmix @ 24.03.2005. 13:23 ] @
Svi build-in accounti i grupe (NT AUTHORITY) imaju posebne namene i svrhe u Windows sistemu. SYSTEM je jedan od njih (SID: S-1-5-18 ). Evo šta MSDN kaže o tome:

Citat:
System (or LocalSystem):
An identity that is used locally by the operating system and by services configured to log on as LocalSystem. System is a hidden member of Administrators. That is, any process running as System has the SID for the built-in Administrators group in its access token.

When a process running locally as System accesses network resources, it does so using the computer's domain identity. Its access token on the remote computer includes the SID for the local computer's domain account plus SIDs for security groups that the computer is a member of, such as Domain Computers and Authenticated Users.


Pored ovoga, smatra se da svi procesi koji rade pod tim accountom pripadaju grupi tzv. "Trusted Computing Base" procesa, što vuče korene još od prastarih IBM sistema. Odatle "hidden member of Administrators". Pošto pod tim accountom rade svi drajveri i neki sistemski servisi i šta sve ne, i što se od spolja preko mreže vidi kao "Domain Computer", taj account se uopšte ni ne smatra "korisnikom", već "kompjuterom".
Inače, to nije ograničenje, ko što ti kažeš. Nije da system nema READ privilegije na svoj HKCU hive, iz gornjeg razloga on ga uopšte ni nema Iako registry iz npr editora izgleda ogromno i monolitno, on je sastavljen iz više fajlova (hives). Svi useri vide isti HKLM, ali svaki user ima svoj HKCU hive fajl (npr. "c:\Documents and Settings\mxm\NTUSER.DAT") koji se montira u trenutku kad se kreira korisnikov identity token preko LoginUser API-a. Account ne može imati SYSTEM token kao što si izložio pošto je SYSTEM sam po sebi identity token.
[ Čarli @ 29.03.2005. 16:06 ] @
private void butSendMejl2_Click(object sender, System.EventArgs
{
// Kreiraj poruku
MailMessage msgMail = new MailMessage();
// postavi njene propertije
msgMail.From = "????????@????.co.yu";
msgMail.To = "[email protected]";
msgMail.Subject = "Slanje sa servera sa SmtpMail.Send metodom";
msgMail.Body = "Isprobavam nesto, pa ako ovo dobijes klikni samo
na 'Reply' ako ti ne bude tesko! Pozdrav! Milivoj";
MailAttachment atachment = new MailAttachment( Server.MapPath(".") +
"\\macaaa.jpg");
dodaj attachment poruci
msgMail.Attachments.Add(atachment);

// postavi SMTP server, ovako
SmtpMail.SmtpServer = "SMTP.????.co.yu";
// ili ovako --- sa IP adresom servera
// SmtpMail.SmtpServer = "xxx.xxx.xxx.xxx"; // dakle x-ovi su cifre IP
// adrese

try
{
// Posalji poruku
SmtpMail.Send(msgMail);
// Obrisi sve text boxove
// Prikaži poruku o uspešnom slanju
Label1.Text += " " + "<b>Message sent.</b>";
}
catch (Exception ex)
{
Label1.Text += " SmtpServer nije konfigurisan za slanje pošte."
+ ex.Message;
}
finally { }
}

Dakle, nužno je da napraviš objekat tipa "MailMessage", te da postaviš property SmtpServer, bilo tekstualno, ili preko IP adrese servera za slanje pošte.
Moj primer ti je primer kako sam slao iz LAN-a, kao klijent, sa localhosta, iz jedne probne Web aplikacije.
Dakle, sve je odrađeno u kodu Web aplikacije --- naravno da će na serveru raditi još bolje, mada bi, u principu, ako je aplikacija instalirana na serveru, morala sama da po defaultu isčita property koji sam naveo, tj. SmtpMail.SmtpServer.
Ako ne ide, samo ti upiši ovo što sam napisao i ići će.
[ Sundance @ 01.04.2005. 08:58 ] @
@mmix: Hvala na ovom lijepom uvodu, ali ja sam pod "privilegija" mislio na nešto tipa SeImpersonatePrivilege kojeg SYSTEM logon sesija i više nego ima. Nakon toga opališ LogonUser preko P/Invoke i čitaš HKCU :)

A i nije baš da sve što je pod SYSTEM nema svoj HKCU. Recimo trik da natjeraš SCM da pokrene regedit pod SYSTEM login ID-em i interaktivnim WS-om: at 9.53<vrijeme sljedeće minute> /interactive regedit.exe, vidiš da ima HKCU, mada to nije HKCU korisnika ali je ipak tu :) Ali su zato su tu super-zanimljivi ključevi HKLM/Security/Policy* koje inače ne možeš čitati, ali to je već druga priča :)