Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / Net / Configuration / SmtpNetworkElement.cs / 1 / SmtpNetworkElement.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.Configuration
{
using System;
using System.Configuration;
using System.Net;
using System.Net.Mail;
using System.Reflection;
using System.Security.Permissions;
public sealed class SmtpNetworkElement : ConfigurationElement
{
public SmtpNetworkElement()
{
this.properties.Add(this.defaultCredentials);
this.properties.Add(this.host);
this.properties.Add(this.password);
this.properties.Add(this.port);
this.properties.Add(this.userName);
}
protected override void PostDeserialize()
{
// Perf optimization. If the configuration is coming from machine.config
// It is safe and we don't need to check for permissions.
if (EvaluationContext.IsMachineLevel)
return;
PropertyInformation portPropertyInfo = ElementInformation.Properties[ConfigurationStrings.Port];
if (portPropertyInfo.ValueOrigin == PropertyValueOrigin.SetHere &&
(int)portPropertyInfo.Value != (int)portPropertyInfo.DefaultValue)
{
try {
(new SmtpPermission(SmtpAccess.ConnectToUnrestrictedPort)).Demand();
} catch (Exception exception) {
throw new ConfigurationErrorsException(
SR.GetString(SR.net_config_property_permission,
portPropertyInfo.Name),
exception);
}
}
}
protected override ConfigurationPropertyCollection Properties
{
get
{
return this.properties;
}
}
[ConfigurationProperty(ConfigurationStrings.DefaultCredentials, DefaultValue = false)]
public bool DefaultCredentials
{
get { return (bool)this[this.defaultCredentials]; }
set { this[this.defaultCredentials] = value; }
}
[ConfigurationProperty(ConfigurationStrings.Host)]
public string Host
{
get { return (string)this[this.host]; }
set { this[this.host] = value; }
}
[ConfigurationProperty(ConfigurationStrings.Password)]
public string Password
{
get { return (string)this[this.password]; }
set { this[this.password] = value; }
}
[ConfigurationProperty(ConfigurationStrings.Port, DefaultValue = 25)]
public int Port
{
get { return (int)this[this.port]; }
set
{
//
this[this.port] = value;
}
}
[ConfigurationProperty(ConfigurationStrings.UserName)]
public string UserName
{
get { return (string)this[this.userName]; }
set { this[this.userName] = value; }
}
//
ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection();
readonly ConfigurationProperty defaultCredentials =
new ConfigurationProperty(ConfigurationStrings.DefaultCredentials, typeof(bool), false,
ConfigurationPropertyOptions.None);
readonly ConfigurationProperty host =
new ConfigurationProperty(ConfigurationStrings.Host, typeof(string), null,
ConfigurationPropertyOptions.None);
readonly ConfigurationProperty password =
new ConfigurationProperty(ConfigurationStrings.Password, typeof(string), null,
ConfigurationPropertyOptions.None);
readonly ConfigurationProperty port =
new ConfigurationProperty(ConfigurationStrings.Port, typeof(int), 25,
null, new IntegerValidator(IPEndPoint.MinPort+1, IPEndPoint.MaxPort), ConfigurationPropertyOptions.None);
readonly ConfigurationProperty userName =
new ConfigurationProperty(ConfigurationStrings.UserName, typeof(string), null,
ConfigurationPropertyOptions.None);
}
internal sealed class SmtpNetworkElementInternal
{
internal SmtpNetworkElementInternal(SmtpNetworkElement element)
{
this.host = element.Host;
this.port = element.Port;
if (element.DefaultCredentials)
{
this.credential = (NetworkCredential)CredentialCache.DefaultCredentials;
}
else if (element.UserName != null && element.UserName.Length > 0)
{
this.credential = new NetworkCredential(element.UserName, element.Password);
}
}
internal NetworkCredential Credential
{
get { return this.credential; }
}
internal string Host
{
get { return this.host; }
}
internal int Port
{
get { return this.port; }
}
string host;
int port;
NetworkCredential credential = null;
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OperationCanceledException.cs
- UInt16Converter.cs
- FontWeights.cs
- CodeDirectiveCollection.cs
- AuthenticationException.cs
- AnimatedTypeHelpers.cs
- DATA_BLOB.cs
- SecurityAccessDeniedException.cs
- SqlUnionizer.cs
- AsymmetricSignatureFormatter.cs
- MetadataCache.cs
- ScriptingSectionGroup.cs
- SourceItem.cs
- XhtmlBasicPhoneCallAdapter.cs
- ErrorsHelper.cs
- cookiecollection.cs
- SectionUpdates.cs
- diagnosticsswitches.cs
- GridViewUpdateEventArgs.cs
- PartialTrustVisibleAssembliesSection.cs
- Activation.cs
- RoleServiceManager.cs
- InternalConfigEventArgs.cs
- ClipboardProcessor.cs
- _UriTypeConverter.cs
- WindowsListViewGroupHelper.cs
- FieldMetadata.cs
- OrthographicCamera.cs
- _TransmitFileOverlappedAsyncResult.cs
- ImageDrawing.cs
- MobileControl.cs
- TemplateInstanceAttribute.cs
- graph.cs
- LogicalTreeHelper.cs
- ComplexType.cs
- UrlUtility.cs
- CounterNameConverter.cs
- ExpressionBuilder.cs
- MultiBinding.cs
- BrowserInteropHelper.cs
- RemoteWebConfigurationHostServer.cs
- NullableBoolConverter.cs
- SafeRightsManagementHandle.cs
- XmlILStorageConverter.cs
- SrgsGrammar.cs
- HighContrastHelper.cs
- References.cs
- TransformProviderWrapper.cs
- SerTrace.cs
- xmlfixedPageInfo.cs
- NavigatingCancelEventArgs.cs
- RunClient.cs
- WarningException.cs
- CompiledQuery.cs
- WindowsScrollBar.cs
- PolyLineSegment.cs
- SignedPkcs7.cs
- ProfileBuildProvider.cs
- PrivilegedConfigurationManager.cs
- StandardOleMarshalObject.cs
- ContentPresenter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- GenericPrincipal.cs
- SQLByte.cs
- EntityDataSourceStatementEditor.cs
- TypeDelegator.cs
- ZoneMembershipCondition.cs
- StringFunctions.cs
- DesignerHost.cs
- WorkflowElementDialog.cs
- Parameter.cs
- ConsoleKeyInfo.cs
- SweepDirectionValidation.cs
- GestureRecognitionResult.cs
- FamilyTypefaceCollection.cs
- MouseWheelEventArgs.cs
- CodeSubDirectory.cs
- DockingAttribute.cs
- QueryReaderSettings.cs
- Restrictions.cs
- ISAPIRuntime.cs
- OperationAbortedException.cs
- ArrangedElement.cs
- WebServiceReceive.cs
- Invariant.cs
- FrameworkTextComposition.cs
- templategroup.cs
- HtmlInputText.cs
- InputProviderSite.cs
- HttpResponseHeader.cs
- ListControl.cs
- Root.cs
- SqlDataSourceCache.cs
- SQLInt16.cs
- XmlNamedNodeMap.cs
- SqlConnectionStringBuilder.cs
- SoapElementAttribute.cs
- Internal.cs
- CustomLineCap.cs
- IgnoreFileBuildProvider.cs