1

.NET (C#) と MS Outlook のヘルプが必要です。簡単なデスクトップ アプリケーションを作成していて、Outlook を使用して電子メールを送信したいと考えています。

  1. 私のデスクトップ アプリがメッセージを生成した場合、Outlook 経由でメールとして送信できるはずです (Outlook が同じ PC で実行されていると想定できます)。これは非常に簡単な操作です。

  2. 1ができたら、それは素晴らしいことです。できればoutlookのカレンダーに項目を挿入できるようにしたいです。

VS 2008 Professional と C# を使用しています。ターゲットは .NET 3.5 です。

どんな助けでも、サンプルコードは大歓迎です。

4

3 に答える 3

2

このコードは、 MSDN の例から直接採用されています。

using System.Net;
using System.Net.Mime;
using System.Net.Mail;

...
...

public static void CreateMessageWithAttachment(string server)
{
    // Specify the file to be attached and sent
    string file = @"C:\Temp\data.xls";


    // Create a message and set up the recipients.
    MailMessage message = new MailMessage(
           "from@gmail.com",
           "to@gmail.com",
           "Subject: Email message with attachment.",
           "Body: See the attached spreadsheet.");


    // Create the file attachment for this e-mail message.
    Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);


    // Add time stamp information for the file.
    ContentDisposition disposition = data.ContentDisposition;
    disposition.CreationDate = System.IO.File.GetCreationTime(file);
    disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
    disposition.ReadDate = System.IO.File.GetLastAccessTime(file);


    // Add the file attachment...
    message.Attachments.Add(data);


    SmtpClient client = new SmtpClient(server);


    // Add credentials if the SMTP server requires them.
    client.Credentials = CredentialCache.DefaultNetworkCredentials;


    try
    {
        client.Send(message);
    }
    catch (Exception ex)
    {
        Console.WriteLine("CreateMessageWithAttachment() Exception: {0}",
              ex.ToString());
        throw;
    }

}
于 2008-12-29T00:23:36.710 に答える
1

リデンプションの使用を強くお勧めします。非常に使いやすく習得しやすい API を備えており、単にメールを送信するだけではありません。

于 2008-12-28T23:39:43.257 に答える
1

MAPI を使用すると、ap/invoke インターフェイスにより、C#のMailItem.Send メソッドなどを使用できるようになります。mapi32.MAPISendMailページには、インターフェイスの設定例が示されています。

/// <summary>
/// The MAPISendMail function sends a message.
///
/// This function differs from the MAPISendDocuments function in that it allows greater
/// flexibility in message generation.
/// </summary>
[DllImport("MAPI32.DLL", CharSet=CharSet.Ansi)]
public static extern uint MAPISendMail(IntPtr lhSession, IntPtr ulUIParam,
MapiMessage lpMessage, uint flFlags, uint ulReserved);

同じp/invokeページにも警告があります。MAPI32 はマネージ コードからはサポートされていません。

ネイティブのSystem.Net.Mail.SmtpClientクラスを使用して、Outlook ではなく SMTP 経由でメールを送信することを検討する必要があります。

于 2008-12-28T11:26:39.790 に答える