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