/// <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)); }
/// <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; }