From 7ee5d3093f8686fff233eef9c16b205dca0e2602 Mon Sep 17 00:00:00 2001 From: ThreeFive-O Date: Thu, 6 Sep 2018 09:57:17 +0200 Subject: [PATCH 1/2] Improve code style of Send-MailMessage cmdlet Change properties to auto properties Fix comment styling Insert lines after statement with curly braces --- .../commands/utility/Send-MailMessage.cs | 251 +++++------------- 1 file changed, 70 insertions(+), 181 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs index 7b24d605e1f..d65bfabb1e4 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs @@ -2,11 +2,11 @@ // Licensed under the MIT License. using System; -using System.Text; -using System.Globalization; -using System.Net.Mail; using System.Diagnostics.CodeAnalysis; +using System.Globalization; using System.Management.Automation; +using System.Net.Mail; +using System.Text; namespace Microsoft.PowerShell.Commands { @@ -20,7 +20,7 @@ public sealed class SendMailMessage : PSCmdlet #region Command Line Parameters /// - /// Specifies the files names to be attached to the email. + /// Gets or sets the files names to be attached to the email. /// If the filename specified can not be found, then the relevant error /// message should be thrown. /// @@ -28,65 +28,33 @@ public sealed class SendMailMessage : PSCmdlet [ValidateNotNullOrEmpty] [Alias("PsPath")] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] - public String[] Attachments - { - get { return _attachments; } - set - { - _attachments = value; - } - } - private String[] _attachments; + public string[] Attachments { get; set; } /// - /// Specifies the address collection that contains the + /// Gets or sets the address collection that contains the /// blind carbon copy (BCC) recipients for the e-mail message. /// [Parameter(ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] - public String[] Bcc - { - get { return _bcc; } - set - { - _bcc = value; - } - } - private String[] _bcc; + public string[] Bcc { get; set; } /// - /// Specifies the body (content) of the message. + /// Gets or sets the body (content) of the message. /// [Parameter(Position = 2, ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] - public String Body - { - get { return _body; } - set - { - _body = value; - } - } - private String _body; + public string Body { get; set; } /// - /// Specifies a value indicating whether the mail message body is in Html. + /// Gets or sets a value indicating whether the mail message body is in Html. /// [Parameter(ValueFromPipelineByPropertyName = true)] [Alias("BAH")] - public SwitchParameter BodyAsHtml - { - get { return _bodyashtml; } - set - { - _bodyashtml = value; - } - } - private SwitchParameter _bodyashtml; + public SwitchParameter BodyAsHtml { get; set; } = false; /// - /// Specifies the encoding used for the content of the body and also the subject. + /// Gets or sets the encoding used for the content of the body and also the subject. /// This is set to ASCII to ensure there are no problems with any email server. /// [Parameter(ValueFromPipelineByPropertyName = true)] @@ -103,173 +71,96 @@ public SwitchParameter BodyAsHtml EncodingConversion.Utf8NoBom, EncodingConversion.Utf32 )] - [ArgumentToEncodingTransformationAttribute()] + [ArgumentToEncodingTransformationAttribute] public Encoding Encoding { get; set; } = Encoding.ASCII; /// - /// Specifies the address collection that contains the + /// Gets or sets the address collection that contains the /// carbon copy (CC) recipients for the e-mail message. /// [Parameter(ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Cc")] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] - public String[] Cc - { - get { return _cc; } - set - { - _cc = value; - } - } - private String[] _cc; + public string[] Cc { get; set; } /// - /// Specifies the delivery notifications options for the e-mail message. The various + /// Gets or sets the delivery notifications options for the e-mail message. The various /// options available for this parameter are None, OnSuccess, OnFailure, Delay and Never. /// [Parameter(ValueFromPipelineByPropertyName = true)] [Alias("DNO")] [ValidateNotNullOrEmpty] - public DeliveryNotificationOptions DeliveryNotificationOption - { - get { return _deliverynotification; } - set - { - _deliverynotification = value; - } - } - private DeliveryNotificationOptions _deliverynotification; + public DeliveryNotificationOptions DeliveryNotificationOption { get; set; } = DeliveryNotificationOptions.None; /// - /// Specifies the from address for this e-mail message. The default value for + /// Gets or sets the from address for this e-mail message. The default value for /// this parameter is the email address of the currently logged on user. /// [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] - public String From - { - get { return _from; } - set - { - _from = value; - } - } - private String _from; + public string From { get; set; } /// - /// Specifies the name of the Host used to send the email. This host name will be assigned + /// Gets or sets the name of the Host used to send the email. This host name will be assigned /// to the Powershell variable PSEmailServer, if this host can not reached an appropriate error. /// message will be displayed. /// [Parameter(Position = 3, ValueFromPipelineByPropertyName = true)] [Alias("ComputerName")] [ValidateNotNullOrEmpty] - public String SmtpServer - { - get { return _smtpserver; } - set - { - _smtpserver = value; - } - } - private String _smtpserver; + public string SmtpServer { get; set; } /// - /// Specifies the priority of the email message. The valid values for this are Normal, High and Low. + /// Gets or sets the priority of the email message. The valid values for this are Normal, High and Low. /// [Parameter(ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] - public MailPriority Priority - { - get { return _priority; } - set - { - _priority = value; - } - } - private MailPriority _priority; + public MailPriority Priority { get; set; } = MailPriority.Normal; /// - /// Specifies the subject of the email message. + /// Gets or sets the subject of the email message. /// [Parameter(Mandatory = true, Position = 1, ValueFromPipelineByPropertyName = true)] [Alias("sub")] [ValidateNotNullOrEmpty] - public String Subject - { - get { return _subject; } - set - { - _subject = value; - } - } - private String _subject; + public string Subject { get; set; } /// - /// Specifies the To address for this e-mail message. + /// Gets or sets the To address for this e-mail message. /// [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] - public String[] To - { - get { return _to; } - set - { - _to = value; - } - } - private String[] _to; + public string[] To { get; set; } /// - /// Specifies the credential for this e-mail message. + /// Gets or sets the credential for this e-mail message. /// [Parameter(ValueFromPipelineByPropertyName = true)] [Credential] [ValidateNotNullOrEmpty] - public PSCredential Credential - { - get { return _credential; } - set - { - _credential = value; - } - } - private PSCredential _credential; + public PSCredential Credential { get; set; } /// - /// Specifies if Secured layer is required or not. + /// Gets or sets if Secured layer is required or not. /// [Parameter(ValueFromPipelineByPropertyName = true)] - public SwitchParameter UseSsl - { - get { return _usessl; } - set - { - _usessl = value; - } - } - private SwitchParameter _usessl; + public SwitchParameter UseSsl { get; set; } = false; /// - /// Specifies the Port to be used on the server. + /// Gets or sets the Port to be used on the server. /// /// /// Value must be greater than zero. /// [Parameter(ValueFromPipelineByPropertyName = true)] [ValidateRange(0, Int32.MaxValue)] - public int Port - { - get { return _port; } - set { _port = value; } - } - private int _port = 0; + public int Port { get; set; } = 0; #endregion - #region private variables and methods + #region Private variables and methods // Instantiate a new instance of MailMessage private MailMessage _mMailMessage = new MailMessage(); @@ -282,7 +173,6 @@ public int Port /// /// /// - /// private void AddAddressesToMailMessage(object address, string param) { string[] objEmailAddresses = address as string[]; @@ -323,92 +213,90 @@ private void AddAddressesToMailMessage(object address, string param) #region Overrides /// - /// ProcessRecord override. + /// BeginProcessing override. /// - protected override - void - BeginProcessing() + protected override void BeginProcessing() { try { // Set the sender address of the mail message - _mMailMessage.From = new MailAddress(_from); + _mMailMessage.From = new MailAddress(From); } catch (FormatException e) { - ErrorRecord er = new ErrorRecord(e, "FormatException", ErrorCategory.InvalidType, _from); + ErrorRecord er = new ErrorRecord(e, "FormatException", ErrorCategory.InvalidType, From); ThrowTerminatingError(er); - // return; } // Set the recipient address of the mail message - AddAddressesToMailMessage(_to, "to"); + AddAddressesToMailMessage(To, "to"); // Set the BCC address of the mail message - if (_bcc != null) + if (Bcc != null) { - AddAddressesToMailMessage(_bcc, "bcc"); + AddAddressesToMailMessage(Bcc, "bcc"); } // Set the CC address of the mail message - if (_cc != null) + if (Cc != null) { - AddAddressesToMailMessage(_cc, "cc"); + AddAddressesToMailMessage(Cc, "cc"); } - //set the delivery notification - _mMailMessage.DeliveryNotificationOptions = _deliverynotification; + // Set the delivery notification + _mMailMessage.DeliveryNotificationOptions = DeliveryNotificationOption; // Set the subject of the mail message - _mMailMessage.Subject = _subject; + _mMailMessage.Subject = Subject; // Set the body of the mail message - _mMailMessage.Body = _body; + _mMailMessage.Body = Body; - //set the subject and body encoding + // Set the subject and body encoding _mMailMessage.SubjectEncoding = Encoding; _mMailMessage.BodyEncoding = Encoding; // Set the format of the mail message body as HTML - _mMailMessage.IsBodyHtml = _bodyashtml; + _mMailMessage.IsBodyHtml = BodyAsHtml; // Set the priority of the mail message to normal - _mMailMessage.Priority = _priority; + _mMailMessage.Priority = Priority; - //get the PowerShell environment variable - //globalEmailServer might be null if it is deleted by: PS> del variable:PSEmailServer + // Get the PowerShell environment variable + // globalEmailServer might be null if it is deleted by: PS> del variable:PSEmailServer PSVariable globalEmailServer = SessionState.Internal.GetVariable(SpecialVariables.PSEmailServer); - if (_smtpserver == null && globalEmailServer != null) + if (SmtpServer == null && globalEmailServer != null) { - _smtpserver = Convert.ToString(globalEmailServer.Value, CultureInfo.InvariantCulture); + SmtpServer = Convert.ToString(globalEmailServer.Value, CultureInfo.InvariantCulture); } - if (string.IsNullOrEmpty(_smtpserver)) + + if (string.IsNullOrEmpty(SmtpServer)) { ErrorRecord er = new ErrorRecord(new InvalidOperationException(SendMailMessageStrings.HostNameValue), null, ErrorCategory.InvalidArgument, null); this.ThrowTerminatingError(er); } - if (_port == 0) + if (Port == 0) { - _mSmtpClient = new SmtpClient(_smtpserver); + _mSmtpClient = new SmtpClient(SmtpServer); } else { - _mSmtpClient = new SmtpClient(_smtpserver, _port); + _mSmtpClient = new SmtpClient(SmtpServer, Port); } - if (_usessl) + if (UseSsl) { _mSmtpClient.EnableSsl = true; } - if (_credential != null) + if (Credential != null) { _mSmtpClient.UseDefaultCredentials = false; - _mSmtpClient.Credentials = _credential.GetNetworkCredential(); + _mSmtpClient.Credentials = Credential.GetNetworkCredential(); } - else if (!_usessl) + else if (!UseSsl) { _mSmtpClient.UseDefaultCredentials = true; } @@ -419,11 +307,11 @@ protected override /// protected override void ProcessRecord() { - //add the attachments - if (_attachments != null) + // Add the attachments + if (Attachments != null) { string filepath = string.Empty; - foreach (string attachFile in _attachments) + foreach (string attachFile in Attachments) { try { @@ -431,9 +319,10 @@ protected override void ProcessRecord() } catch (ItemNotFoundException e) { - //NOTE: This will throw + // NOTE: This will throw PathUtils.ReportFileOpenFailure(this, filepath, e); } + Attachment mailAttachment = new Attachment(filepath); _mMailMessage.Attachments.Add(mailAttachment); } @@ -441,7 +330,7 @@ protected override void ProcessRecord() } /// - /// EndProcessing. + /// EndProcessing override. /// protected override void EndProcessing() { @@ -479,7 +368,7 @@ protected override void EndProcessing() WriteError(er); } - //if we don't dispose the attachments, the sender can't modify or use the files sent. + // If we don't dispose the attachments, the sender can't modify or use the files sent. _mMailMessage.Attachments.Dispose(); } From 6af4af83a94329fd94f3bf41937cd025704f6f8a Mon Sep 17 00:00:00 2001 From: ThreeFive-O Date: Fri, 7 Sep 2018 19:42:50 +0200 Subject: [PATCH 2/2] Remove unnecessary intializers from properties Fix summary comment for BodyAsHtml --- .../commands/utility/Send-MailMessage.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs index d65bfabb1e4..64fa3d1aace 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs @@ -47,11 +47,11 @@ public sealed class SendMailMessage : PSCmdlet public string Body { get; set; } /// - /// Gets or sets a value indicating whether the mail message body is in Html. + /// Gets or sets the value indicating whether the mail message body is in Html. /// [Parameter(ValueFromPipelineByPropertyName = true)] [Alias("BAH")] - public SwitchParameter BodyAsHtml { get; set; } = false; + public SwitchParameter BodyAsHtml { get; set; } /// /// Gets or sets the encoding used for the content of the body and also the subject. @@ -91,7 +91,7 @@ public sealed class SendMailMessage : PSCmdlet [Parameter(ValueFromPipelineByPropertyName = true)] [Alias("DNO")] [ValidateNotNullOrEmpty] - public DeliveryNotificationOptions DeliveryNotificationOption { get; set; } = DeliveryNotificationOptions.None; + public DeliveryNotificationOptions DeliveryNotificationOption { get; set; } /// /// Gets or sets the from address for this e-mail message. The default value for @@ -116,7 +116,7 @@ public sealed class SendMailMessage : PSCmdlet /// [Parameter(ValueFromPipelineByPropertyName = true)] [ValidateNotNullOrEmpty] - public MailPriority Priority { get; set; } = MailPriority.Normal; + public MailPriority Priority { get; set; } /// /// Gets or sets the subject of the email message. @@ -146,7 +146,7 @@ public sealed class SendMailMessage : PSCmdlet /// Gets or sets if Secured layer is required or not. /// [Parameter(ValueFromPipelineByPropertyName = true)] - public SwitchParameter UseSsl { get; set; } = false; + public SwitchParameter UseSsl { get; set; } /// /// Gets or sets the Port to be used on the server. @@ -156,7 +156,7 @@ public sealed class SendMailMessage : PSCmdlet /// [Parameter(ValueFromPipelineByPropertyName = true)] [ValidateRange(0, Int32.MaxValue)] - public int Port { get; set; } = 0; + public int Port { get; set; } #endregion