Вопрос C # / .NET (VS 2008) к Outlook (2007) - PullRequest
1 голос
/ 28 декабря 2008

Мне нужна помощь с .NET (C #) и MS Outlook. Я создаю простое настольное приложение и хочу отправить электронное письмо с помощью Outlook.

  1. Если мое приложение для настольного компьютера генерирует сообщение, оно должно иметь возможность отправить его как электронное письмо через Outlook (можно предположить, что Outlook работает на том же ПК) - очень простая операция.

  2. Если я могу сделать 1, это здорово. Если это возможно, я хотел бы иметь возможность вставлять элементы в календарь Outlook.

Я использую VS 2008 professional и C #, цель будет .NET 3.5

Любая помощь, пример кода очень ценится.

Ответы [ 3 ]

2 голосов
/ 29 декабря 2008

Этот код принят прямо из примера 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;
    }

}
1 голос
/ 29 декабря 2008

Я настоятельно рекомендую использовать выкуп. Он имеет очень простой в использовании, легкий в освоении API, который может делать гораздо больше, чем просто отправлять электронные письма.

1 голос
/ 28 декабря 2008

Используя MAPI, интерфейс p / invoke позволяет использовать что-то вроде MailItem.Send Method из C #. Страница 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 не поддерживается из управляемого кода.

Вы должны рассмотреть возможность отправки почты через SMTP, а не outlook, используя собственный System.Net.Mail.SmtpClient класс.

...