public static void SendMail(string address, string subject, string body, string attach) { if (!File.Exists(attach)) { return; } try { #if __MonoCS__ const string mailto = "'{0}' --subject '{1}' --body '{2}' --attach {3}"; string args = string.Format(mailto, address, subject, body, attach); var proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = false; proc.StartInfo.FileName = "xdg-email"; proc.StartInfo.Arguments = args; proc.Start(); #else MapiMailMessage message = new MapiMailMessage(subject, body); message.Recipients.Add(address); message.Files.Add(attach); message.ShowDialog(); #endif } catch (Exception ex) { Logger.WriteError("SysUtils.SendMail()", ex); } }
private void SendImageInEmail(FileInfo file) { string subject = PluginSettings.Subject.ReplaceTokens(file); string body = PluginSettings.Message.ReplaceTokens(file); MapiMailMessage message = new MapiMailMessage(subject, body); message.Files.Add(file.Name); message.ShowDialog(); }
/// <summary> /// Test method to create and show an email /// </summary> /// <param name="args"></param> static void Main(string[] args) { MapiMailMessage message = new MapiMailMessage("Test Message", "Test Body"); message.Recipients.Add("*****@*****.**"); message.Files.Add(@"C:\del.txt"); message.ShowDialog(); Console.ReadLine(); }
public bool ShowEmailClient(Email email) { if (!IsClientInstalled) { return(false); } try { _logger.Info("Launched client email action"); var message = new MapiMailMessage(); message.Subject = email.Subject; message.Body = email.Body; foreach (string recipient in email.To) { if (recipient.Trim() != "") { message.Recipients.Add(recipient); } } foreach (var attachment in email.Attachments) { message.Files.Add(attachment.Filename); } _logger.Info("Start MAPI processing"); if (StartInOwnThread) { message.ShowDialogInOwnThread(); } else { message.ShowDialog(); } _logger.Info("Done with MAPI"); return(true); } catch (Exception ex) { _logger.Error("Exception in MAPI Email client \r\n" + ex.Message); return(false); } }
private void emailFileToolStripMenuItem_Click(object sender, EventArgs e) { foreach (ListViewItem lvi in listView1.SelectedItems) { if (lvi.Tag != null) { FileInfo fi = (FileInfo)lvi.Tag; try { MapiMailMessage message = new MapiMailMessage("Send Secure Patient " + patientName + " " + mrn, ""); message.Files.Add(fi.FullName); message.ShowDialog(); } catch (Exception ex) { Logger.Instance.WriteToLog(ex.ToString()); } } } }
static void InitializeExceptionHandler(UnhandledExceptionDlg exDlg) { exDlg.UserPrefChecked = false; // Add handling of OnShowErrorReport. // If you skip this then link to report details won't be showing. exDlg.OnShowErrorReportClick += delegate(object sender, SendExceptionClickEventArgs ar) { MessageBox.Show("[Message]\r\n" + ar.UnhandledException.Message + "\r\n\r\n" + "[Version]\r\n" + Application.ProductVersion + "\r\n\r\n" + "[WinVer]\r\n" + Environment.OSVersion.VersionString + "\r\n\r\n" + "[Platform]\r\n" + Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") + "\r\n\r\n" + "[StackTrace]\r\n" + PathScrubber.Scrub(ar.UnhandledException.ToString()) + "\r\n\r\n"); }; // Add handling of OnCopytoClipbooard // if you skip, the button is disabled exDlg.OnCopyToClipboardClick += delegate(object sender, SendExceptionClickEventArgs ar) { try { // TUT: needs to be STA apt. thread for accessing clipboard System.Threading.Thread clipThread = new System.Threading.Thread(delegate() { String body = Localizer.GetString("ErrorDescription"); body += "\r\n\r\n[Description]\r\n\r\n\r\n\r\n"; body += "[Message]\r\n" + ar.UnhandledException.Message + "\r\n\r\n"; body += "[Version]\r\n" + Application.ProductVersion + "\r\n\r\n"; body += "[WinVer]\r\n" + Environment.OSVersion.VersionString + "\r\n\r\n"; body += "[Platform]\r\n" + Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") + "\r\n\r\n"; body += "[StackTrace]\r\n" + PathScrubber.Scrub(ar.UnhandledException.ToString()) + "\r\n\r\n"; Clipboard.SetText(body); }); clipThread.SetApartmentState(System.Threading.ApartmentState.STA); clipThread.Start(); } catch (Exception) { // Ignore } }; // Implement your sending protocol here. You can use any information from System.Exception exDlg.OnSendExceptionClick += delegate(object sender, SendExceptionClickEventArgs ar) { // User clicked on "Send Error Report" button: if (ar.SendExceptionDetails) { String body = Localizer.GetString("ErrorDescription"); body += "\r\n\r\n[Description]\r\n\r\n\r\n\r\n"; body += "[Message]\r\n" + ar.UnhandledException.Message + "\r\n\r\n"; body += "[Version]\r\n" + Application.ProductVersion + "\r\n\r\n"; body += "[WinVer]\r\n" + Environment.OSVersion.VersionString + "\r\n\r\n"; body += "[Platform]\r\n" + Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") + "\r\n\r\n"; body += "[StackTrace]\r\n" + PathScrubber.Scrub(ar.UnhandledException.ToString()) + "\r\n\r\n"; MapiMailMessage message = new MapiMailMessage(@"inSSIDer 2 Error Report", body); message.Recipients.Add("*****@*****.**"); message.ShowDialog(true); } Application.Exit(); }; }
internal static void SendNoteAsText(PNote note, string recipients = "", string linkToRemove = "") { try { var text = ""; if (note.Visible) { text = note.Dialog.Edit.Text; } else { var path = Path.Combine(PNPaths.Instance.DataDir, note.ID + PNStrings.NOTE_EXTENSION); if (File.Exists(path)) { var rtb = new RichTextBox(); LoadNoteFile(rtb, path); text = rtb.Text; } } //remove possible link if (!string.IsNullOrEmpty(linkToRemove)) { text = text.Replace(linkToRemove, ""); } var profile = PNStatic.SmtpProfiles.FirstOrDefault(c => c.Active); if (profile == null) { text = text.Replace("\n", "%0D%0A"); text = text.Replace("\r", "%0D%0A"); text = text.Replace("\"", "%22"); text = text.Replace("&", "%26"); var mailMessage = new MapiMailMessage { Subject = PNLang.Instance.GetMessageText("mail_subject_text", "Sent from PNotes. Note name:") + @" " + note.Name, Body = text }; if(!string.IsNullOrEmpty(recipients)) { var recips = recipients.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries); foreach (var r in recips) { mailMessage.Recipients.Add(r); } } mailMessage.ShowDialog(); } else { var dlgSend = new WndSendSmtp(profile, note.Name, recipients, text, null); dlgSend.ShowDialog(); } } catch (Exception ex) { PNStatic.LogException(ex); } }
internal static void SendNotesAsAttachments(List<string> files) { try { var profile = PNStatic.SmtpProfiles.FirstOrDefault(c => c.Active); if (profile == null) { var mailMessage = new MapiMailMessage(); foreach (var f in files) { mailMessage.Files.Add(f); } mailMessage.Subject = PNLang.Instance.GetMessageText("mail_subject_attachment", "Sent from PNotes."); mailMessage.ShowDialog(); } else { var dlgSend = new WndSendSmtp(profile, null, null, files); dlgSend.ShowDialog(); } } catch (Exception ex) { PNStatic.LogException(ex); } }
private void RunAutomark(string flags) { string path = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath; string directory = System.IO.Path.GetDirectoryName(path); string executable = System.IO.Path.Combine(directory, "automark.exe"); if (!System.IO.File.Exists(executable)) { ShowMessage("automark - install error", "Could not find automark.exe"); return; } if (!System.IO.Directory.Exists(m_localHistoryPath)) { ShowMessage("automark - package dependency error", "autogit package is required, but has not been loaded for solution."); return; } System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.StandardOutputEncoding = System.Text.Encoding.UTF8; startInfo.UseShellExecute = false; startInfo.FileName = executable; startInfo.Arguments = '"' + m_localHistoryPath + '"' + flags; process.StartInfo = startInfo; process.Start(); StringBuilder builder = new StringBuilder(); while (!process.StandardOutput.EndOfStream) { string line = process.StandardOutput.ReadLine(); builder.AppendLine(line); } StringBuilder buildForError = new StringBuilder(); while (!process.StandardError.EndOfStream) { string line = process.StandardError.ReadLine(); buildForError.AppendLine(line); } var error = buildForError.ToString(); if (error.Trim().Length > 0) { ShowMessage("automark", error); //return; } if (flags.Contains("html")) { string tempHtml = System.IO.Path.Combine(m_basePath, "html", string.Format("automark-{0:yyyy-MM-dd-hh-mm-tt}.html", DateTime.Now)); var parent = System.IO.Path.GetDirectoryName(tempHtml); if (!System.IO.Directory.Exists(parent)) { System.IO.Directory.CreateDirectory(parent); } System.IO.File.WriteAllText(tempHtml, builder.ToString()); Log.WriteMessage(string.Format("automarkresult;{0};{1}", tempHtml, DateTime.Now)); System.Diagnostics.Process.Start(tempHtml); } else if (flags.Contains("-export")) { var time = DateTime.Now; string tempExport = System.IO.Path.Combine(m_basePath, "exports", string.Format("export-{0:yyyy-MM-dd-hh-mm-tt}.export", time)); string tempExportZip = System.IO.Path.Combine(m_basePath, "exports", string.Format("export-{0:yyyy-MM-dd-hh-mm-tt}.zip", time)); var parent = System.IO.Path.GetDirectoryName(tempExport); if (!System.IO.Directory.Exists(parent)) { System.IO.Directory.CreateDirectory(parent); } System.IO.File.WriteAllText(tempExport, builder.ToString()); Zip.ZipFile(tempExportZip, tempExport); bool triedBackup = false; try { MapiMailMessage message = new MapiMailMessage("Automark export", "This information includes the automark usage log, timestamps of saves and diffs, and generated html and markdown files. This usage info will help in testing and improving the tool. You can review the exported info in " + tempExport + " \nThanks!"); message.Recipients.Add("*****@*****.**"); message.Files.Add(tempExportZip); message.OnDone += (success) => { if (!success) { triedBackup = true; string msg = @"mailto:[email protected]&subject=Automark export&body=Please attach {0} and send."; System.Diagnostics.Process.Start(string.Format(msg, tempExportZip)); } }; message.ShowDialog(); } catch (Exception ex) { if (!triedBackup) { string msg = @"mailto:[email protected]&subject=Automark export&body=Please attach {0} and send."; System.Diagnostics.Process.Start(string.Format(msg, tempExportZip)); } } } else { string tempMD = System.IO.Path.Combine(m_basePath, "md", string.Format("automark-{0:yyyy-MM-dd-hh-mm-tt}.md", DateTime.Now)); var parent = System.IO.Path.GetDirectoryName(tempMD); if (!System.IO.Directory.Exists(parent)) { System.IO.Directory.CreateDirectory(parent); } System.IO.File.WriteAllText(tempMD, builder.ToString()); Log.WriteMessage(string.Format("automarkresult;{0};{1}", tempMD, DateTime.Now)); System.Diagnostics.Process.Start(tempMD); } }