У меня есть список документов и адресов электронной почты.

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

Создание MailItem было, я застрял. Нашел образец на MSDN, который должен работать с Office 2013 и выше.

Это то, что я до сих пор:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Outlook;

namespace Test_Invoice
{
    class SendviaMail
    {
        string demofile = @"C:\Desktop\test-inv\1_Test Testesen_1_010.pdf";
        public void Send()
        {
            MailItem eMail = new MailItem();

            eMail.Subject = "Here is Your Invoice";
            eMail.To = "test@testesen.dk";
            eMail.Body = "Dette er en test mail for TestMailApp";

        }

        public void Send(string email, string filename)
        {

        }
    }
}

Я пытался понять документацию по MSDN и прочитать несколько постов здесь.

Насколько я могу понять, следующим шагом является добавление вложения (демонстрационный файл). Если я правильно понимаю, мне нужно что-то вроде

eMail.AttachmentAdd = demofile;

Но это не работает.

Возможно, я не совсем правильно понимаю библиотеку. Глядя на этот пример из MSDN https://msdn.microsoft.com/en- нас / библиотека / bb644320.aspx

Результаты в этом коде:

using Microsoft.Office.Interop.Outlook;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Outlook = Microsoft.Office.Interop.Outlook;

namespace Test_Invoice
{
    class SendviaMail
    {
        string demofile = @"C:\Desktop\test-inv\1_Test Testesen_1_010.pdf";
        public void Send()
        {
            Outlook.MailItem mail = Application.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
            mail.Subject = "Quarterly Sales Report FY06 Q4";

            //MailItem eMail = new MailItem();

            //eMail.Subject = "tilmelding og faktura";
            //eMail.To = "test@testesen.dk";
            //eMail.Body = "Dette er en test mail for TestMailApp";
            //eMail.AttachmentAdd
        }

        public void Send(string email, string filename)
        {

        }
    }
}
2
Jonas 28 Май 2017 в 13:41

2 ответа

Лучший ответ

Фиксированный пример кода должен выглядеть следующим образом:

var ol = new Outlook.Application();
Outlook.MailItem mail = ol.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;

Обратите внимание, что вам нужно объявить псевдоним Outlook с помощью оператора using:

using Outlook = Microsoft.Office.Interop.Outlook;

(как вы уже сделали) ... но также должны удалить

using Microsoft.Office.Interop.Outlook;

Чтобы Visual Studio не путала ваши ссылки.

Остальная часть примера MSDN должна работать должным образом. У меня нет других примеров, на которые я могу вам указать, поэтому лучше всего искать Microsoft.Office.Interop.Outlook или исследовать связанные вопросы здесь.

1
Filburt 28 Май 2017 в 12:59

Используйте класс .Net для этого:

public static void CreateMessageWithAttachment(string server,string filePath)
{
    // Specify the file to be attached and sent.
    // This example assumes that a file named Data.xls exists in the
    // current working directory.
    string file = filePath;
    // Create a message and set up the recipients.
    MailMessage message = new MailMessage(
       "jane@contoso.com",
       "ben@contoso.com",
       "Quarterly data report.",
       "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 to this e-mail message.
    message.Attachments.Add(data);

    //Send the message.
    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("Exception caught in CreateMessageWithAttachment(): {0}", 
                  ex.ToString() );            
    }
    data.Dispose();
}

После этого просто переберите список из цикла и отправьте его в функцию

Еще один пример: https: // www. .codeproject.com / Советы / 286952 / Create-A - простой -SMTP - сервер -в- CSharp

1
Leon Barkan 28 Май 2017 в 12:18