169 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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 = Database.ActiveDatabase;
 | 
						|
				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();
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |