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 を起動しないでください。

ただし、できることは、Outlook を使用せずに Web サーバーから電子メールを送信することです。

これを行うには、MSDN for の例に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 に答える