這是不可能的!
提供了使用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");
}
});
}
值得注意的(不考慮這個代碼示例中):
- 一些ISP可能對附件大小限制,一些務必在嘗試發送電子郵件之前檢查。
- smtp主機/端口可能會有所不同,最有效的方法是檢查定期更新的數據庫,或讓用戶自己設置它們。
- 線程部分都是關於UI響應的,但是,如果用戶關閉主應用程序窗口並且郵件仍在發送,它將被搶佔。
可能的重複http://stackoverflow.com/q/1195111/799586 – 2012-04-10 12:04:41
這實際上並沒有_send_電子郵件,它啓動機器的默認電子郵件客戶端與預填充字段。 – 2012-04-10 12:04:43
@Mr。失望:好的,如果你願意,我想打開默認的電子郵件客戶端在磁盤上生成的圖像作爲附件... – serhio 2012-04-10 12:14:35