示例#1
0
        /// <summary>
        /// Creates a rasp mail handler
        /// </summary>
        /// <param name="bindingContext">the binding context</param>
        /// <returns>a rasp mail handler</returns>
        public static RaspMailHandler GetRaspMailHandlerFromBindingContext(BindingContext bindingContext)
        {
            // Get the mail binding from the context
            RaspEmailBindingElement mailBinding = (RaspEmailBindingElement)bindingContext.Binding.Elements.Find <RaspEmailBindingElement>();

            if (mailBinding == null)
            {
                throw new RaspEmailBindingElemenNotFoundtException();
            }

            // Get the type of the outbox implementation

            Type outBoxImplementationType = Type.GetType(mailBinding.OutboxImplementation);

            if (outBoxImplementationType == null)
            {
                throw new RaspMailboxImplementationCouldNotBeFoundException("outbox");
            }

            // Get the type of the inbox implementation
            Type inBoxImplementationType = Type.GetType(mailBinding.InboxImplementation);

            if (inBoxImplementationType == null)
            {
                throw new RaspMailboxImplementationCouldNotBeFoundException("inbox");
            }


            // Read the connection policy from config
            MailServerConnectionPolicy inboxConnectionPolicy = new MailServerConnectionPolicy();

            if (mailBinding.PollingInterval != null && mailBinding.PollingInterval != TimeSpan.Zero)
            {
                inboxConnectionPolicy.PollingInterval = mailBinding.PollingInterval;
            }

            inboxConnectionPolicy.AuthenticationMode = mailBinding.ReceivingAuthenticationMode;
            inboxConnectionPolicy.Port = mailBinding.ReceivingPort;

            MailServerConnectionPolicy outboxConnectionPolicy = new MailServerConnectionPolicy();

            outboxConnectionPolicy.PollingInterval    = inboxConnectionPolicy.PollingInterval;
            outboxConnectionPolicy.AuthenticationMode = mailBinding.SendingAuthenticationMode;
            outboxConnectionPolicy.Port = mailBinding.SendingPort;


            MailServerConfiguration recievingServerConfiguration = new MailServerConfiguration(
                mailBinding.ReceivingServerAddress,
                mailBinding.ReceivingUserName,
                mailBinding.ReceivingPassword,
                mailBinding.ReplyAddress,
                inboxConnectionPolicy);
            MailServerConfiguration sendingServerConfiguration = new MailServerConfiguration(
                mailBinding.SendingServerAddress,
                mailBinding.SendingUserName,
                mailBinding.SendingPassword,
                mailBinding.ReplyAddress,
                outboxConnectionPolicy);
            MailHandlerConfiguration handlerConfiguration = new MailHandlerConfiguration(
                outBoxImplementationType,
                inBoxImplementationType,
                sendingServerConfiguration,
                recievingServerConfiguration);

            return(new RaspMailHandler(handlerConfiguration));
        }
示例#2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="channelManager">channel handler</param>
 /// <param name="mailQueue">mail queue</param>
 public RaspEmailReplyChannel(ChannelManagerBase channelManager, IMailHandler mailHandler, MailSoap12TransportBinding msg, RaspEmailBindingElement bindingElement)
     : base(channelManager)
 {
     _msg                    = msg;
     _mailHandler            = mailHandler;
     _asyncTryReceiveRequest = new AsyncTryReceiveRequest(TryReceiveRequest);
     _bindingElement         = bindingElement;
 }