Code:
/ DotNET / DotNET / 8.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
- DBCommand.cs
- RegionData.cs
- WebPartChrome.cs
- WeakReferenceList.cs
- TransformerInfo.cs
- KnownTypesProvider.cs
- ModifierKeysValueSerializer.cs
- FixedTextBuilder.cs
- CharAnimationUsingKeyFrames.cs
- DemultiplexingClientMessageFormatter.cs
- ExpressionBindings.cs
- ScrollableControl.cs
- DragDropHelper.cs
- WpfPayload.cs
- ProtocolsConfigurationHandler.cs
- dataprotectionpermissionattribute.cs
- BoundPropertyEntry.cs
- Executor.cs
- RTLAwareMessageBox.cs
- MembershipAdapter.cs
- DataGridViewCellValueEventArgs.cs
- HtmlHistory.cs
- DataGridColumnCollection.cs
- PointLight.cs
- ItemTypeToolStripMenuItem.cs
- XmlLanguage.cs
- ControlValuePropertyAttribute.cs
- GPRECTF.cs
- ColorConverter.cs
- SqlCommand.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ClientOperation.cs
- RightNameExpirationInfoPair.cs
- Command.cs
- EmptyControlCollection.cs
- EventTask.cs
- ChannelServices.cs
- DesignerWithHeader.cs
- PenContexts.cs
- TextBox.cs
- DiagnosticSection.cs
- Timer.cs
- IgnoreSectionHandler.cs
- EndpointConfigContainer.cs
- ObjectStateEntry.cs
- TransportContext.cs
- EncoderParameter.cs
- PageFunction.cs
- NonSerializedAttribute.cs
- StateInitializationDesigner.cs
- ContainerActivationHelper.cs
- _NegoStream.cs
- ManifestSignedXml.cs
- Part.cs
- X509PeerCertificateElement.cs
- RemoteWebConfigurationHostStream.cs
- TextEditorThreadLocalStore.cs
- MessageBuilder.cs
- ListBase.cs
- DataGridViewCellCollection.cs
- QueueSurrogate.cs
- NotifyCollectionChangedEventArgs.cs
- DeadCharTextComposition.cs
- RowUpdatedEventArgs.cs
- WebPartAddingEventArgs.cs
- TcpServerChannel.cs
- XmlAttribute.cs
- TraceContextEventArgs.cs
- RuleSettingsCollection.cs
- AppSettingsExpressionEditor.cs
- EditBehavior.cs
- Regex.cs
- DataContractSet.cs
- EdmPropertyAttribute.cs
- CreatingCookieEventArgs.cs
- ServiceHostFactory.cs
- WebPartEditVerb.cs
- RtType.cs
- QuaternionAnimationBase.cs
- ItemChangedEventArgs.cs
- EnumerableRowCollectionExtensions.cs
- IDataContractSurrogate.cs
- CommonObjectSecurity.cs
- XamlSerializationHelper.cs
- LocatorPartList.cs
- TypeUnloadedException.cs
- CustomAttribute.cs
- TableCellCollection.cs
- ProvidersHelper.cs
- CreateRefExpr.cs
- ToolboxItemAttribute.cs
- FixedDocument.cs
- StylusTip.cs
- FilteredXmlReader.cs
- HtmlCommandAdapter.cs
- MimeObjectFactory.cs
- AttachedProperty.cs
- BookmarkUndoUnit.cs
- DeferrableContentConverter.cs
- DateTimeOffset.cs