コード例 #1
0
        /// <summary>
        /// Sends a mail based on off SMTP settings in .config
        /// </summary>
        /// <param name="mailToAddresses"></param>
        /// <param name="title"></param>
        /// <param name="contents"></param>
        /// <param name="legal"></param>
        /// <param name="callback"></param>
        /// <param name="callbackData"></param>
        /// <param name="addressseparator"></param>
        /// <returns>Email addresses and their send status (true or false)</returns>
        public KeyValuePair <String, Boolean> Send(System.Collections.Generic.List <string> mailToAddresses, string title, string contents, FooterLegal legal,
                                                   SendCompletedCallbackDelegate callback, string callbackData, char addressseparator = ';')
        {
            var returnValue = new KeyValuePair <String, bool>();
            var client      = new SmtpClient();
            var footer      = string.Empty;
            var toAddresses = new List <string>();

            try
            {
                // Never batch send for legal reasons. Have to put email in the footer of every email
                foreach (var emailAddress in mailToAddresses)
                {
                    if (emailAddress.IsEmail(false))
                    {
                        // Will get 'from, etc' from .config file
                        var OutgoingMail = new MailMessage();
                        OutgoingMail.To.Add(new MailAddress(emailAddress));
                        OutgoingMail.Subject    = title;
                        OutgoingMail.Body       = contents + (legal.PublishFooter ? legal.ToFooter() : string.Empty);
                        OutgoingMail.IsBodyHtml = true;
                        OutgoingMail.Priority   = MailPriority.Normal;
                        client.SendCompleted   += SendCompletedCallback;
                        client.Send(OutgoingMail);
                    }
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                client.Dispose();
            }

            // Return success/failre
            return(returnValue);
        }