2012-09-25 117 views
1

我正在處理我的第一個項目,並且需要添加一個函數作爲button_click事件。功能應該打開默認電子郵件客戶端的「發送新電子郵件」表單,爲空,沒有任何目的地,主題或正文,只需附加文件。使用c#從ASP.NET網站發送默認電子郵件客戶端(例如Outlook,..)的電子郵件

我經歷了很多類似的教程在stackoverflow和codeproject,但無法解決它。我發現類似的功能從代碼發送消息,但不只是打開一個空的電子郵件表單並附加所需的文件。但無法成功修改。

我相信也有人在尋找這種解決方案。

我試過到目前爲止:

protected void btnSend_Click(object sender, EventArgs e) 
{ 
    string value; 
    value = lstpdfList.SelectedItem.Text; 
    string file = "W:/" + value + ".pdf"; 

    MailMessage message = new MailMessage(); 
    Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); 
    ContentDisposition disposition = data.ContentDisposition; 
    disposition.CreationDate = System.IO.File.GetCreationTime(file); 
    disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); 
    disposition.ReadDate = System.IO.File.GetLastWriteTime(file); 
    message.Attachments.Add(data); 
} 
+2

是System.Net.Mail命名空間中的.NET類和程序是一個有效的電子郵件客戶端沒有UI。如果你想操縱一個外部程序,你需要與它的API進行交互。如果您規定支持哪些電子郵件包,通常會更容易 - 下面是您想要使用Outlook執行的示例:http://stackoverflow.com/questions/6148639/how-to-open-outlook-new-mail-窗戶 - c-sharp – dash

+0

D'oh。你的編輯顯着改變了這個問題。您需要在瀏覽器中有一些客戶端代碼才能打開郵件包並附加文件。這有幾個問題 - 例如,如果您訪問了一個網站,然後開始打開您的電子郵件客戶端並將文件附加到該網站,您會非常高興嗎?這是該功能很難通過默認的鏈接之外的網絡提供的原因之一。 – dash

+0

它將成爲公司內部使用的Web應用程序(asp.net網站)。在列表框中有一份手冊列表,當他們選擇一個時,他們應該能夠將其作爲附件添加到Outlook中的新電子郵件表單中。你可以幫幫我嗎 ?非常重要..謝謝你 –

回答

-1

你不能從一個Web應用程序客戶端自動化Outlook。而且您不應該在服務器上調用Outlook。

但是,您可以做的是從Web服務器發送電子郵件,而不涉及Outlook。

要做到這一點,只需按照example on MSDN for SmtpClient.Send()

還有一個以編程方式創建帶有附件hereMailMessage的示例。

public static void CreateTestMessage2(string server) 
{ 
    string to = "[email protected]"; 
    string from = "[email protected]"; 
    MailMessage message = new MailMessage(from, to); 
    message.Subject = "Using the new SMTP client."; 
    message.Body = @"Using this new feature, you can send an e-mail message from an application very easily."; 
    SmtpClient client = new SmtpClient(server); 
    // Credentials are necessary if the server requires the client 
    // to authenticate before it will send e-mail on the client's behalf. 
    client.UseDefaultCredentials = true; 

    try 
    { 
     client.Send(message); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("Exception caught in CreateTestMessage2(): {0}", ex.ToString());   
    }    
} 
+0

這是假設他不想以使用表單的用戶的身份發送電子郵件。 –

+0

不一定。根據郵件服務器設置,可以使用Web應用程序將'from'設置爲用戶的電子郵件地址。該消息將顯示爲來自用戶。 – tomfanning

+0

「MailMessage」和「SmtpClient」對象都需要位於「使用」塊中。 –

1

您無法將文件從ASP.net附加到Outlook,這是一個安全問題。

如果你有訪問Exchange Web服務可以直接與交流互動,從用戶帳戶中有附件等發送電子郵件

您可能需要代理訪問用於執行的用戶帳戶ASP.NET請求成功地能夠與Exchange Server服務交互,您也可以使用ASP.net模擬。

退房的文檔:

http://msdn.microsoft.com/en-us/library/exchange/bb409286(v=exchg.140).aspx

MAILMESSAGE
+0

爲什麼要這樣做呢? SmtpClient是2-3行代碼,並支持用戶要求的所有內容。完全沒有必要使用EWS。 – tomfanning

+0

這只是另一種選擇,因爲它是一個內部網站,它可能更有用,它計劃擴展使用EWS。 –

相關問題