2012-04-10 72 views
2

我需要打開一個新的電子郵件通過默認的郵件管理器的附件(不包括SMTP代碼) 默認的郵件管理使用:打開包含附加文件(Windows)

System.Diagnostics.Process.Start(String.Format("mailto:{0}", txtEmail.Text)) 

是否有可能還要添加附件?


我可以試試這個

http://www.codeproject.com/Articles/17561/Programmatically-adding-attachments-to-emails-in-C

,但我應該明白,總有一個Microsoft Outlook需要在客戶端計算機...

+2

可能的重複http://stackoverflow.com/q/1195111/799586 – 2012-04-10 12:04:41

+1

這實際上並沒有_send_電子郵件,它啓動機器的默認電子郵件客戶端與預填充字段。 – 2012-04-10 12:04:43

+0

@Mr。失望:好的,如果你願意,我想打開默認的電子郵件客戶端在磁盤上生成的圖像作爲附件... – serhio 2012-04-10 12:14:35

回答

0

這是不可能的!
提供了使用System.Net.Mail命名空間來完成它的詳細方法;

private void button1_Click(object sender, EventArgs e) 
{ 
    SmtpClient smtpserver = new SmtpClient(); 
    smtpserver.Credentials = new NetworkCredential("[email protected]", "passphrase"); 
    smtpserver.Port = 587; 
    smtpserver.Host = "smtp.live.com"; 
    smtpserver.EnableSsl = true; 

    MailMessage mail = new MailMessage(); 
    mail.From = new MailAddress("[email protected]"); 
    mail.To.Add("[email protected]"); 
    mail.Subject = "testing"; 

    string pathTOAttachment; 
    string _Attachment = pathToAttachment; 
    Attachment oAttch = new Attachment(_Attachment); 
    mail.Attachments.Add(oAttch); 

    mail.Body = "message body"; 

    ThreadPool.QueueUserWorkItem(delegate 
    { 
     try 
     { 
      smtpserver.Send(mail); 
     } 
     //you can get more specific in here 
     catch 
     { 
      MessageBox.Show("failure sending message"); 
     } 
    }); 
} 

值得注意的(不考慮這個代碼示例中):

  1. 一些ISP可能對附件大小限制,一些務必在嘗試發送電子郵件之前檢查。
  2. smtp主機/端口可能會有所不同,最有效的方法是檢查定期更新的數據庫,或讓用戶自己設置它們。
  3. 線程部分都是關於UI響應的,但是,如果用戶關閉主應用程序窗口並且郵件仍在發送,它將被搶佔。
+0

我說過它是不可能的:-),我的無知,試試這個:http://www.vbusers.com/codecsharp/codeget.asp?ThreadID=71&PostID=1 – sarepta 2012-09-03 13:30:31

相關問題