1

我正在做我的第一个项目,我需要添加一个函数作为 button_click 事件。函数应该打开默认电子邮件客户端的“发送新电子邮件”表单,为空,没有任何目的地、主题或正文,仅带有附件。

我在 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);
}
4

2 回答 2

1

您不能将 ASP.net 中的文件附加到 Outlook,这是一个安全问题。

如果您有权访问 Exchange Web 服务,则可以直接与 Exchange 交互以从该用户帐户发送带有附件等的电子邮件。

您可能必须委派对用于执行 ASP.NET 请求的用户帐户的访问权限才能成功与 Exchange Server 服务交互,您也可以使用 ASP.net 模拟。

在以下位置查看文档:

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

于 2012-09-25T08:22:08.370 回答
-1

您无法通过 Web 应用程序在客户端自动执行 Outlook。而且您不应该在服务器上调用 Outlook。

但是,您可以做的是从 Web 服务器发送电子邮件,而不涉及 Outlook。

为此,只需按照MSDN 上的示例进行SmtpClient.Send().

这里还有一个以编程方式创建MailMessage带附件示例。

public static void CreateTestMessage2(string server)
{
    string to = "jane@contoso.com";
    string from = "ben@contoso.com";
    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() );           
    }              
}
于 2012-09-25T08:20:42.410 回答