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(); } } }
private bool TrySendMessage(IEnumerable <string> recipients, PickerServer hub, int portNumber) { bool result; using (SmtpClient smtpClient = new SmtpClient(hub.FQDN, portNumber, new TestMessage.SmtpClientDebugOutput(this))) { smtpClient.AuthCredentials(CredentialCache.DefaultNetworkCredentials); using (MemoryStream messageMemoryStream = this.GetMessageMemoryStream()) { smtpClient.DataStream = messageMemoryStream; smtpClient.From = this.Sender.ToString(); smtpClient.To = recipients.ToArray <string>(); try { smtpClient.Submit(); } catch (Exception ex) { base.WriteWarning(ex.Message); return(false); } result = true; } } return(result); }
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(); } } } }