示例#1
0
 /// <summary>
 /// Send email immediately (synchronously)
 /// </summary>
 /// <returns>True if eMail is sent successfully</returns>
 public static bool SendEMail(EmailBasicSettings emailSettings, string subject, string message, Log jobLog)
 {
     return SendEMail(emailSettings, subject, message, jobLog, null);
 }
示例#2
0
        /// <summary>
        /// Send email in the background and callback handler when completed (synchronous or asynchronous)
        /// Check the error in the callback handler for eMail status (success or error or cancelled)
        /// </summary>
        /// <param name="asyncCallback">User handler to call back and will send eMail asynchronously. The callback handler will receive an object of type EmailUserState</param>
        /// <param name="forceAsyncNoCallback">If set to true it will send eMail asynchronously without any user callback handler</param>
        /// <returns>False if an error is encountered crafting the eMail message</returns>
        public static bool SendEMail(EmailBasicSettings emailSettings, string subject, string message, Log jobLog, SendCompletedEventHandler asyncCallback, bool forceAsyncNoCallback = false)
        {
            string smtpServer = emailSettings.smtpServer;
            int portNo = emailSettings.port; // default port is 25
            bool ssl = emailSettings.ssl;
            string fromAddress = emailSettings.fromAddress;
            string toAddresses = emailSettings.toAddresses;
            string bccAddresses = emailSettings.bccAddress;
            string username = emailSettings.userName;
            string password = emailSettings.password;

            jobLog.WriteEntry(Localise.GetPhrase("Request to send eMail"), Log.LogEntryType.Information, true);
            jobLog.WriteEntry("Server -> " + smtpServer, Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("Port -> " + portNo.ToString(System.Globalization.CultureInfo.InvariantCulture), Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("SSL -> " + ssl.ToString(System.Globalization.CultureInfo.InvariantCulture), Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("Username -> " + username, Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("From -> " + fromAddress, Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("To -> " + toAddresses, Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("Subject -> " + subject, Log.LogEntryType.Debug, true);
            jobLog.WriteEntry("Message -> " + message, Log.LogEntryType.Debug, true);

            try
            {
                // Create the eMail message
                MailMessage eMailMessage = new MailMessage();
                eMailMessage.Subject = subject;
                eMailMessage.Body = message;
                eMailMessage.From = new MailAddress(fromAddress);
                if (!String.IsNullOrWhiteSpace(toAddresses)) // Avoid an exception, since to is not mandatory
                {
                    string[] addresses = toAddresses.Split(';');
                    for (int i = 0; i < addresses.Length; i++)
                        eMailMessage.To.Add(addresses[i]); // Add the To recipients
                }
                if (!String.IsNullOrWhiteSpace(bccAddresses)) // Avoid an exception, since bcc is not mandatory
                {
                    string[] bccToAddresses = bccAddresses.Split(';');
                    for (int i = 0; i < bccToAddresses.Length; i++)
                        eMailMessage.Bcc.Add(bccToAddresses[i]); // Add the Bcc recipients
                }
                eMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                eMailMessage.SubjectEncoding = System.Text.Encoding.UTF8;

                // Create the client to send the message
                SmtpClient eMailClient = new SmtpClient(smtpServer, portNo);
                if (username != "")
                    eMailClient.Credentials = new System.Net.NetworkCredential(username, password); // add the authentication details
                if (ssl)
                    eMailClient.EnableSsl = true;// Set the SSL if required
                eMailClient.Timeout = GlobalDefs.SMTP_TIMEOUT; // Set the timeout

                // Send the eMail - check for Async or Sync email sending
                if (asyncCallback == null && !forceAsyncNoCallback)
                {
                    eMailClient.Send(eMailMessage);
                    jobLog.WriteEntry(Localise.GetPhrase("Successfully send eMail"), Log.LogEntryType.Information, true);
                }
                else
                {
                    if (forceAsyncNoCallback)
                        eMailClient.SendCompleted += eMailClient_SendCompleted; // use default call back
                    else
                        eMailClient.SendCompleted += eMailClient_SendCompleted + asyncCallback; // Register call back

                    eMailClient.SendAsync(eMailMessage, new SendEmailOptions { eMailSettings = emailSettings, message = message, subject = subject, jobLog = jobLog, asyncCallBackHandler = asyncCallback, forceAysncCallBack = forceAsyncNoCallback });
                }
                
                return true;
            }
            catch (Exception e)
            {
                jobLog.WriteEntry(Localise.GetPhrase("Error sending eMail") + " -> " + e.ToString(), Log.LogEntryType.Error, true);
                return false;
            }
        }
示例#3
0
        public bool TestEmailSettings(EmailBasicSettings emailSettings)
        {
            if (emailSettings == null)
            {
                Log.AppLog.WriteEntry(this, "No eMail settings found to test.", Log.LogEntryType.Error, true);
                return false;
            }

            string subject = Localise.GetPhrase("MCEBuddy Test eMail");
            string message = Localise.GetPhrase("MCEBuddy - Have a great day!");

            return eMail.SendEMail(emailSettings, subject, message, Log.AppLog);
        }