private void OnButtonSubmitClick(object sender, RoutedEventArgs e)
{
var mapidata = new Hashtable();
mapidata.Add("email", emailData);
mapidata.Add("company", companyData);
mapidata.Add("defect", bug.IsChecked == true ? true : false);
mapidata.Add("feature", feature.IsChecked == true ? true : false);
mapidata.Add("description", descriptionData.Text);
mapidata.Add("filepath", string.Empty);
if (attachLog.IsChecked == true)
mapidata["filepath"] = TraceLog.FilePath;
// Run the default email client in a separate thread, freeing up
// Visual Studio for the user.
//_worker.DoWork += delegate(object s, DoWorkEventArgs args)
// {
Hashtable data = mapidata; //(Hashtable)args.Argument;
var mapi = new Mapi();
foreach (string recipient in Settings.Default.FeedbackEmailRecipients.Split(','))
mapi.AddRecipientTo(recipient);
foreach (string email in emailData.Text.Split(','))
mapi.AddRecipientCc(email);
string feedbackType = string.Empty;
if ((bool) data["defect"]) feedbackType = VisualStudio.Resources.FeedbackTypeDefect;
else if ((bool) data["feature"]) feedbackType = VisualStudio.Resources.FeedbackTypeFeature;
string subjectLine = string.Format(CultureInfo.CurrentCulture, "TSVC {0} - {1} - {2} ({3})",
Assembly.GetExecutingAssembly().GetName().Version, feedbackType,
((string) data["description"]).Substring(0,
((string) data["description"]).
Length > 50
? 50
: ((string)
data["description"]).
Length),
companyData.Text);
if (!string.IsNullOrEmpty((string) data["filepath"]))
// Attach the log.
mapi.AddAttachment(TraceLog.FilePath);
mapi.SendMailPopup(subjectLine, (string) data["description"]);
//};
//_worker.RunWorkerAsync(mapidata);
emailData.Text = string.Empty;
companyData.Text = string.Empty;
descriptionData.Text = string.Empty;
attachLog.IsChecked = true;
Close();
}