다음을 통해 공유


MailBindingBase 클래스

업데이트: 2007년 11월

MailBindingBase 클래스의 핵심 동작을 정의하고 메일 바인딩 파생을 위한 기본 클래스를 제공합니다.

네임스페이스:  Microsoft.ServiceModel.Channels.Mail
어셈블리:  Microsoft.ServiceModel.Channels.Mail(Microsoft.ServiceModel.Channels.Mail.dll)

구문

‘선언
Public MustInherit Class MailBindingBase _
    Inherits Binding
‘사용 방법
Dim instance As MailBindingBase
public abstract class MailBindingBase : Binding
public ref class MailBindingBase abstract : public Binding
public abstract class MailBindingBase extends Binding

설명

MailBindingBase 클래스는 인코딩 요소 및 전송 바인딩 요소와 같은 바인딩 요소의 미리 정의된 컬렉션을 나타냅니다. 이 클래스는 모든 메일 바인딩 요소에 공통되는 속성을 모아 놓은 것입니다.

이 클래스의 미리 정의된 인코딩 요소는 TextMessageEncodingBindingElement입니다.

전송 바인딩 요소는 MailBindingBase를 인스턴스화하는 데 사용되는 구체적인 메일 바인딩 서브클래스에 의해 결정됩니다. 이러한 서브클래스에는 다음이 포함됩니다.

WindowsMobileMailBinding의 미리 정의된 전송 바인딩 요소는 WindowsMobileMailTransportBindingElement입니다. ExchangeWebServiceMailBinding의 미리 정의된 전송 바인딩 요소는 ExchangeWebServiceMailTransportBindingElement입니다.

MailBindingBase 클래스를 사용하여 채널 팩터리 및 채널 수신기를 만들 수 있습니다. 이 클래스를 사용하여 메일 바인딩을 위한 채널 수신기를 만들 때는 인수 중 하나로 Uri를 받는 BuildChannelListener의 오버로드를 사용해야 합니다.

참고

이 클래스는 .NET Compact Framework 버전 3.5에 포함되어 있지만, 이를 사용하려면 런타임에 .NET Compact Framework 3.5 또는 .NET Framework 버전 3.0이 필요합니다.

예제

다음 예제에서는 MailBindingBase에서 파생된 개체를 생성하는 방법을 보여 줍니다. 또한 WCF Exchange Server 메일 전송을 기반으로 하는 WCF(Windows Communication Foundation) 응용 프로그램에서 이러한 개체를 사용하여 메시지를 주고받는 방법을 보여 줍니다.

사용자 지정 serializer는 WCF Exchange Server 메일 전송의 고유한 요소가 아니므로 이 예제에 포함되지 않았습니다.

Class Program
    Private Shared ServerAddress As New Uri("http://128.128.1.1")
    Private Shared ClientEmailAddress As String = "someone@example.com"
    Private Shared Password As String = "password"

    Private Shared ChannelName As String = "Channel1"
    Private Shared DestinationEmailAddress As String = "someone@fabrikam.com"

    Private Shared serializer As New CFMessagingSerializer(GetType(String))


    Shared Sub Main(ByVal args() As String) 
        ' For applications on the device, use WindowsMobileMailBinding
        ' instead of ExchangeWebServiceMailBinding.
        Dim binding As ExchangeWebServiceMailBinding
        Dim factory As IChannelFactory(Of IOutputChannel)
        Dim listener As IChannelListener(Of IInputChannel)
        Dim output As IOutputChannel
        Dim input As IInputChannel
        Dim bpc As BindingParameterCollection
        Dim message As Message
        Dim str As String

        ' For applications on the device, use WindowsMobileMailBinding.
        binding = New ExchangeWebServiceMailBinding(ServerAddress, New NetworkCredential(ClientEmailAddress, Password))
        bpc = New BindingParameterCollection()

        factory = binding.BuildChannelFactory(Of IOutputChannel)(bpc)
        factory.Open()
        output = factory.CreateChannel(New EndpointAddress(MailUriHelper.Create(ChannelName, DestinationEmailAddress)))
        output.Open()

        message = System.ServiceModel.Channels.Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer)
        output.Send(message)

        output.Close()
        factory.Close()

        listener = binding.BuildChannelListener(Of IInputChannel)(MailUriHelper.CreateUri(ChannelName, ""), bpc)
        listener.Open()
        input = listener.AcceptChannel()
        input.Open()

        message = input.Receive()
        str = message.GetBody(Of String)(serializer)

        Console.WriteLine("Received message: {0}", str)

        input.Close()
        listener.Close()

        binding.Close()

    End Sub
End Class
class Program
{
    private static Uri ServerAddress = new Uri("http://128.128.1.1");
    private static string ClientEmailAddress = "someone@example.com";
    private static string Password = "password";

    private static string ChannelName = "Channel1";
    private static string DestinationEmailAddress = "someone@fabrikam.com";

    private static CFMessagingSerializer serializer = new CFMessagingSerializer(typeof(string));

    static void Main(string[] args)
    {
        // For applications on the device, use WindowsMobileMailBinding
        // instead of ExchangeWebServiceMailBinding.
        ExchangeWebServiceMailBinding binding;
        IChannelFactory<IOutputChannel> factory;
        IChannelListener<IInputChannel> listener;
        IOutputChannel output;
        IInputChannel input;
        BindingParameterCollection bpc;
        Message message;
        string str;

        // For applications on the device, use WindowsMobileMailBinding.
        binding = new ExchangeWebServiceMailBinding(ServerAddress, new NetworkCredential(ClientEmailAddress, Password));
        bpc = new BindingParameterCollection();

        factory = binding.BuildChannelFactory<IOutputChannel>(bpc);
        factory.Open();
        output = factory.CreateChannel(new EndpointAddress(MailUriHelper.Create(ChannelName, DestinationEmailAddress)));
        output.Open();

        message = Message.CreateMessage(MessageVersion.Default, "urn:Test", "Hello, World!", serializer);
        output.Send(message);

        output.Close();
        factory.Close();

        listener = binding.BuildChannelListener<IInputChannel>(MailUriHelper.CreateUri(ChannelName, ""), bpc);
        listener.Open();
        input = listener.AcceptChannel();
        input.Open();

        message = input.Receive();
        str = message.GetBody<string>(serializer);

        Console.WriteLine("Received message: {0}", str);

        input.Close();
        listener.Close();

        binding.Close();
    }
}

상속 계층 구조

System.Object
  System.ServiceModel.Channels.Binding
    Microsoft.ServiceModel.Channels.Mail.MailBindingBase
      Microsoft.ServiceModel.Channels.Mail.WindowsMobile.WindowsMobileMailBinding

스레드로부터의 안전성

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Compact Framework

3.5에서 지원

참고 항목

참조

MailBindingBase 멤버

Microsoft.ServiceModel.Channels.Mail 네임스페이스