MailSecurity Class
Contains methods for configuring channel security options for the mail binding.
Assembly: Microsoft.ServiceModel.Channels.Mail (in Microsoft.ServiceModel.Channels.Mail.dll)
This class is used for classes that are derived from the MailBindingBase object. Use the Security property to return the MailSecurity object.
Note: |
|---|
This class is included with the .NET Compact Framework version 3.5, but it requires either the .NET Compact Framework 3.5 or the .NET Framework version 3.0 or later at run time. |
The following example shows how to send a message with message security enabled for the mail binding.
The custom serializer is not specific to the Exchange Server mail transport and is not included in this example.
Class Program Private Shared ChannelName As String = "Channel1" Private Shared ServiceEmailAddress As String = "service@fabrikam.com" Private Shared serializer As New CFMessagingSerializer(GetType(String)) Shared Sub Main(ByVal args() As String) Dim factory As IChannelFactory(Of IOutputChannel) Dim output As IOutputChannel Dim bpc As BindingParameterCollection Dim message As Message Dim binding As ExchangeWebServiceMailBinding Dim clientEmailServer As New Uri("http://mail.example.com") Dim clientEmailAddress As String = "client@example.com" Dim password As String = "password" binding = New ExchangeWebServiceMailBinding(clientEmailServer, New NetworkCredential(clientEmailAddress, password)) binding.Security.Mode = MailSecurityMode.Message bpc = New BindingParameterCollection() Dim cc As New ClientCredentials() cc.ClientCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, "example.com") cc.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.ChainTrust cc.ServiceCertificate.SetDefaultCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, "fabrikam.com") Dim cpr As New ChannelProtectionRequirements() ' Sign and encrypt body for *all* messages cpr.OutgoingSignatureParts.AddParts(New MessagePartSpecification(True), "*") cpr.IncomingSignatureParts.AddParts(New MessagePartSpecification(True), "*") cpr.OutgoingEncryptionParts.AddParts(New MessagePartSpecification(True), "*") cpr.IncomingEncryptionParts.AddParts(New MessagePartSpecification(True), "*") bpc.Add(cc) bpc.Add(cpr) factory = binding.BuildChannelFactory(Of IOutputChannel)(bpc) factory.Open() Dim sendAddress As New EndpointAddress(MailUriHelper.CreateUri(ChannelName, ServiceEmailAddress), EndpointIdentity.CreateX509CertificateIdentity(cc.ServiceCertificate.DefaultCertificate)) output = factory.CreateChannel(sendAddress) message = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer) output.Open() output.Send(message) output.Close() factory.Close() binding.Close() ' Receiving message on the server side ' Dim listener As IChannelListener(Of IInputChannel) Dim input As IInputChannel Dim serviceEmailServer As New Uri("http://mail.fabrikam.com") binding = New ExchangeWebServiceMailBinding(serviceEmailServer, New NetworkCredential(ServiceEmailAddress, password), MailSecurityMode.Message) ' Create credential for the listening side Dim sc As New ServiceCredentials() sc.ServiceCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, "fabrikam.com") sc.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None bpc = New BindingParameterCollection() bpc.Add(sc) bpc.Add(cpr) listener = binding.BuildChannelListener(Of IInputChannel)(MailUriHelper.CreateUri(ChannelName, "")) listener.Open() input = listener.AcceptChannel() input.Open() message = input.Receive() Dim data As String = message.GetBody(Of String)(serializer) input.Close() listener.Close() binding.Close() End Sub End Class
Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note: