Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NamedObject.cs
- XamlDebuggerXmlReader.cs
- NamedObject.cs
- Decoder.cs
- CollectionChangeEventArgs.cs
- SourceSwitch.cs
- SqlDataSourceFilteringEventArgs.cs
- Events.cs
- SqlCacheDependencySection.cs
- NullableDecimalSumAggregationOperator.cs
- COM2ExtendedTypeConverter.cs
- TableItemPattern.cs
- MergablePropertyAttribute.cs
- ClientScriptManagerWrapper.cs
- RelationshipConstraintValidator.cs
- DataControlLinkButton.cs
- CompatibleIComparer.cs
- WorkflowOperationInvoker.cs
- ReadOnlyAttribute.cs
- ImageCodecInfo.cs
- OdbcHandle.cs
- SessionStateUtil.cs
- DiscreteKeyFrames.cs
- DefaultExpression.cs
- DataGridViewColumnConverter.cs
- DelimitedListTraceListener.cs
- MappingMetadataHelper.cs
- TableCellCollection.cs
- LicenseContext.cs
- RenderDataDrawingContext.cs
- SoapMessage.cs
- HostingPreferredMapPath.cs
- VectorConverter.cs
- AssociationEndMember.cs
- GuidelineSet.cs
- ManagedFilter.cs
- ImageDrawing.cs
- HtmlPageAdapter.cs
- FullTextLine.cs
- ProfileParameter.cs
- DefaultIfEmptyQueryOperator.cs
- PagesSection.cs
- XslNumber.cs
- AssemblyBuilderData.cs
- ButtonRenderer.cs
- CodeTypeDelegate.cs
- WSTransactionSection.cs
- SolidColorBrush.cs
- TargetPerspective.cs
- ScopelessEnumAttribute.cs
- BoundConstants.cs
- SpellerStatusTable.cs
- hwndwrapper.cs
- DefaultMemberAttribute.cs
- BehaviorEditorPart.cs
- FileDialogCustomPlace.cs
- FullTextLine.cs
- ZipQueryOperator.cs
- Pointer.cs
- PersonalizableAttribute.cs
- StatusStrip.cs
- WebPartVerb.cs
- X509Certificate.cs
- NullableDoubleAverageAggregationOperator.cs
- XmlDataSource.cs
- TaskFileService.cs
- DataTemplateSelector.cs
- XmlSchemaProviderAttribute.cs
- ClientBuildManager.cs
- QueryOptionExpression.cs
- GridViewAutomationPeer.cs
- XmlLinkedNode.cs
- WorkflowViewElement.cs
- GuidConverter.cs
- SimpleMailWebEventProvider.cs
- Validator.cs
- Trace.cs
- RectangleHotSpot.cs
- ScaleTransform3D.cs
- TextEffect.cs
- LogExtentCollection.cs
- LinkLabel.cs
- SiteMap.cs
- WasEndpointConfigContainer.cs
- DefaultPrintController.cs
- WebDisplayNameAttribute.cs
- SID.cs
- ISessionStateStore.cs
- TextBreakpoint.cs
- ToolStripControlHost.cs
- TreeNodeCollection.cs
- LinqDataSourceView.cs
- MatchingStyle.cs
- InputScopeNameConverter.cs
- PageThemeCodeDomTreeGenerator.cs
- HttpModuleCollection.cs
- CharEnumerator.cs
- SelectionItemProviderWrapper.cs
- VisualBasicSettingsHandler.cs
- CodeExpressionStatement.cs