Esempio n. 1
0
        /// <inheritdoc />
        public Task SendAsync(MailMessage message)
        {
            var  data   = new Dictionary <string, object>();
            bool cancel = false;

            // Run pre process interceptors.
            foreach (var interceptor in interceptors)
            {
                interceptor.Sending(message, data, ref cancel);
                if (cancel)
                {
#if NET452
                    var tcs = new TaskCompletionSource <bool>();
                    tcs.SetResult(true);
                    return(tcs.Task);
#else
                    return(Task.CompletedTask);
#endif
                }
            }

            // Send email and run post process interceptors.
            return(ExecutionStrategy.Execute(Process, message, data, CancellationToken).ContinueWith(task =>
            {
                if (!task.IsFaulted)
                {
                    foreach (var interceptor in interceptors)
                    {
                        interceptor.Sent(message, data);
                    }
                }
            }, CancellationToken));
        }
Esempio n. 2
0
        /// <inheritdoc />
        public Task Send(MailMessage message)
        {
            var  data   = new Dictionary <string, object>();
            bool cancel = false;

            // run pre process interceptors
            foreach (var interceptor in interceptors)
            {
                interceptor.Sending(message, data, ref cancel);
                if (cancel)
                {
                    return(Task.CompletedTask);
                }
            }

            // send email and run post process interceptors
            return(ExecutionStrategy.Execute(Process, message, data, CancellationToken).ContinueWith((task) =>
            {
                if (task.IsFaulted == false)
                {
                    foreach (var interceptor in interceptors)
                    {
                        interceptor.Sent(message, data);
                    }
                }
            }));
        }
Esempio n. 3
0
        /// <summary>
        /// Receive an envelope for executing.
        /// </summary>
        internal override bool Receive(Envelope envelope)
        {
            ExecutionStrategy executionStrategy = _executionStrategy;

            if (executionStrategy != null)
            {
                executionStrategy.Execute(envelope);
            }

            RaiseEnvelopeReceivedEvent(envelope);
            return(true);
        }