using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using LBOutlookLibrary; using System.Reflection; using VEPROMS.CSLA.Library; using System.Text.RegularExpressions; using System.Net.Mail; using System.Net; using System.IO; namespace Volian.Controls.Library { public partial class frmSendErrorLog : Form { private string _ErrorLogPath; public bool OutlookEmail { get { return rbOutlook.Checked; } set { if (value) rbOutlook.Checked = true; else rbManual.Checked = true; } } public string SMTPServer { get { return tbServer.Text; } set { tbServer.Text = value; } } public string SMTPUser { get { return tbUsername.Text; } set { tbUsername.Text = value; } } public frmSendErrorLog(bool outlookEmail, string smtpServer, string smtpUser, string errorlogpath) { InitializeComponent(); tbPassword.PasswordChar = '\u25CF'; OutlookEmail = outlookEmail; SMTPServer = smtpServer; SMTPUser = smtpUser; _ErrorLogPath = errorlogpath; } private void emailSettingChanged(object sender, EventArgs e) { tbServer.Enabled = tbUsername.Enabled = tbPassword.Enabled = lblServer.Enabled = lblUsername.Enabled = lblPassword.Enabled = rbManual.Checked; } private void btnSend_Click(object sender, EventArgs e) { if (OutlookEmail) { if (SendOutlookEmail()) { this.DialogResult = DialogResult.OK; this.Close(); } } else { if (SendSMTPEmail()) { this.DialogResult = DialogResult.OK; this.Close(); } } } private bool SendSMTPEmail() { FileStream fs = null; try { MailMessage mm = new MailMessage(); mm.From = new MailAddress(SMTPUser); mm.To.Add("support@volian.com"); //mm.To.Add("rmark@epix.net"); //mm.To.Add("jcbodine@gmail.com"); mm.Subject = "PROMS Error Log " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss"); mm.Body = Header + "\r\n\r\n" + tbContent.Text; fs = File.Open(_ErrorLogPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); mm.Attachments.Add(new Attachment(fs, "ErrorLog.txt")); SmtpClient sc = new SmtpClient(SMTPServer); sc.EnableSsl = true; sc.Credentials = new NetworkCredential(SMTPUser, tbPassword.Text); sc.Send(mm); return true; } catch (Exception ex) { MessageBox.Show(ex.Message); return false; } finally { fs.Close(); } } public string Header { get { StringBuilder sb = new StringBuilder(); //sb.Append("PROMS\t\tVersion: "); sb.AppendLine("PROMS"); sb.Append("Version: "); sb.Append(AssemblyVersion); DateTime buildDateTime = new System.IO.FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime; sb.AppendLine(String.Format("\t\tBuild Date: {0}", buildDateTime.ToString())); string connectionString = Database.VEPROMS_Connection; Match mServer = Regex.Match(connectionString, ".*Data Source=([^;]*).*"); string server = (mServer.Success) ? mServer.Groups[1].Value : "unknown"; if (server.StartsWith(@".\")) server = @"Local \ " + server.Substring(2); string databaseName = string.Format("{0}[SQL:{1:yyMM.ddHH}]", Database.ActiveDatabase, Database.RevDate); sb.Append(string.Format("SQL Server: {0}", server)); //if (databaseName == null) databaseName = Regex.Replace(connectionString, "^.*Initial Catalog=([^;]*);.*$", "$1", RegexOptions.IgnoreCase); sb.AppendLine(string.Format("\t\tDatabase: {0}", databaseName)); if (OutlookEmail) sb.AppendLine("sent via outlook"); else sb.AppendLine("sent via manual settings"); return sb.ToString(); } } private bool SendOutlookEmail() { try { LBApplicationClass app = new LBApplicationClass(); LBMailItemClass msg = app.CreateMailItem(); msg.Recipients.Add("support@volian.com"); //msg.Recipients.Add("rmark@epix.net"); //msg.Recipients.Add("jcbodine@gmail.com"); //msg.To = "jcbodine@gmail.com";//"rmark@epix.net"; //msg.Recipients.Add("jcbodine@gmail.com"); msg.Subject = "PROMS Error Log " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss"); msg.BodyFormat = LBOlBodyFormat.olFormatPlain; msg.Body = Header + "\r\n\r\n" + tbContent.Text; msg.AddAttachment(_ErrorLogPath); msg.Send(); return true; } catch (Exception ex) { if (ex.Message.ToLower().Contains("failed due to the following error: 80080005")) MessageBox.Show("You cannot send email via a running instance of Outlook from VE PROMS running from within Visual Studio."); else MessageBox.Show(string.Format("{0} - {1}", ex.GetType().Name, ex.Message)); return false; } } public string AssemblyVersion { get { return Application.ProductVersion; return Assembly.GetExecutingAssembly().GetName().Version.ToString(); } } } }