コード例 #1
0
ファイル: TestMessage.cs プロジェクト: YHZX2013/exchange_diff
        protected override void InternalProcessRecord()
        {
            int num = ServicePrincipalName.RegisterServiceClass("SmtpSvc");

            if (num == 0)
            {
                base.WriteVerbose(Strings.SpnRegistrationSucceeded);
            }
            else
            {
                this.WriteWarning(Strings.SpnRegistrationFailed(num));
            }
            List <string> recipients = new List <string>(this.Recipients.Count);

            foreach (ProxyAddress proxyAddress in this.Recipients)
            {
                recipients.Add(proxyAddress.AddressString);
            }
            using (ServerPickerManager serverPickerManager = new ServerPickerManager("Test-Message cmdlet", ServerRole.HubTransport, ExTraceGlobals.BridgeheadPickerTracer))
            {
                PickerServerList pickerServerList = serverPickerManager.GetPickerServerList();
                try
                {
                    PickerServer pickerServer = null;
                    bool         flag         = false;
                    while (!flag)
                    {
                        PickerServer hub = pickerServerList.PickNextUsingRoundRobinPreferringLocal();
                        if (hub == null)
                        {
                            this.WriteWarning(Strings.NoHubsAvailable);
                            break;
                        }
                        if (pickerServer == null)
                        {
                            pickerServer = hub;
                        }
                        else if (hub == pickerServer)
                        {
                            this.WriteWarning(Strings.NoHubsAvailable);
                            break;
                        }
                        base.WriteVerbose(Strings.TryingToSubmitTestmessage(hub.MachineName));
                        int[] source = new int[]
                        {
                            25,
                            2525
                        };
                        if (source.Any((int port) => this.TrySendMessage(recipients, hub, port)))
                        {
                            flag = true;
                        }
                    }
                }
                finally
                {
                    pickerServerList.Release();
                }
            }
        }
コード例 #2
0
 protected virtual void SendMessage(EmailMessage msg, string recipientAddress)
 {
     if (msg == null || string.IsNullOrEmpty(recipientAddress))
     {
         return;
     }
     using (ServerPickerManager serverPickerManager = new ServerPickerManager("OwaFblHandler", ServerRole.HubTransport, ExTraceGlobals.CoreTracer))
     {
         PickerServerList pickerServerList = null;
         try
         {
             pickerServerList = serverPickerManager.GetPickerServerList();
             PickerServer pickerServer = pickerServerList.PickNextUsingRoundRobinPreferringLocal();
             string       machineName  = pickerServer.MachineName;
             using (SmtpClient smtpClient = new SmtpClient(machineName, 25, new OwaFblHandler.SmtpClientDebugOutput()))
             {
                 smtpClient.AuthCredentials(CredentialCache.DefaultNetworkCredentials);
                 smtpClient.To = new string[]
                 {
                     recipientAddress
                 };
                 using (MemoryStream memoryStream = new MemoryStream())
                 {
                     msg.MimeDocument.WriteTo(memoryStream);
                     smtpClient.DataStream = memoryStream;
                     smtpClient.Submit();
                 }
             }
         }
         finally
         {
             if (pickerServerList != null)
             {
                 pickerServerList.Release();
             }
         }
     }
 }