目前,我正在使用以下方法打开用户的Outlook电子邮件帐户,并在电子邮件中填充相关内容以进行发送:
public void SendSupportEmail(string emailAddress, string subject, string body) { Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" + body); }
但是,我希望能够用附件填充电子邮件。
就像是:
public void SendSupportEmail(string emailAddress, string subject, string body) { Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" + body + "&Attach=" + @"C:\Documents and Settings\Administrator\Desktop\stuff.txt"); }
但是,这似乎不起作用。有谁知道一种可以使之工作的方法!?
帮助极大的赞赏。
问候。
mailto:不正式支持附件。我听说Outlook 2003将使用以下语法:
<a href='mailto:name@domain.com?Subject=SubjTxt&Body=Bod_Txt&Attachment=""C:\file.txt"" '>
处理此问题的更好方法是使用System.Net.Mail.Attachment在服务器上发送邮件。
public static void CreateMessageWithAttachment(string server) { // Specify the file to be attached and sent. // This example assumes that a file named Data.xls exists in the // current working directory. string file = "data.xls"; // Create a message and set up the recipients. MailMessage message = new MailMessage( "jane@contoso.com", "ben@contoso.com", "Quarterly data report.", "See the attached spreadsheet."); // Create the file attachment for this e-mail message. Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); // Add time stamp information for the file. ContentDisposition disposition = data.ContentDisposition; disposition.CreationDate = System.IO.File.GetCreationTime(file); disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); disposition.ReadDate = System.IO.File.GetLastAccessTime(file); // Add the file attachment to this e-mail message. message.Attachments.Add(data); //Send the message. SmtpClient client = new SmtpClient(server); // Add credentials if the SMTP server requires them. client.Credentials = CredentialCache.DefaultNetworkCredentials; try { client.Send(message); } catch (Exception ex) { Console.WriteLine("Exception caught in CreateMessageWithAttachment(): {0}", ex.ToString() ); } data.Dispose(); }