Пошлите Автоматизированное электронное письмо через службу Windows, которая имеет встроенное изображение с помощью C#

У меня уже есть сервис окон C#, который мы используем внутренне для контроля каталога в нашей сети и когда она обнаруживает изменение, отсылает электронное письмо с помощью нашего внутреннего сервера SMTP для указанных групп людей.

Теперь мне нужно к embedd изображение в том автоматизированном электронном письме. Я понимаю, что должен создать AlternateView и Связанный Ресурс и использовать cID Связанного Ресурса в AlternateView, корректном.

То, что я не понимаю, - то, куда я помещаю изображение? Если я добавляю его к своему сервисному проекту и устанавливаю Copy to Output Directory = Copy Always? Если так, как я затем получил бы доступ при создании моего LinkedResource? Кроме того, куда я помещаю изображение на Сервер, размещающий Сервис?

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

// This event is called when an object(file,folder) is created in the srcPath
    void WatcherCreated(object source , FileSystemEventArgs e)
    {
        var folderName = e.Name;
        var folderPath = e.FullPath;

        MailMessage mail = new MailMessage();

        mail.From = new MailAddress("FolderMonitor@myWork.org");
        mail.To.Add("PSchaller@myWork.org");

        mail.Subject = "New Enrollment for " + folderName;

        AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is the plain text view", null,
                                                                              "text/html");

        AlternateView htmlView =
            AlternateView.CreateAlternateViewFromString("Here is an embedded image. <img src=cid:enrollProcessID>",
                                                        null, "text/html");

        LinkedResource imageResourceLink = new LinkedResource("C:\\FolderMonitorService\\EnrollmentProcess.jpg")
                                               {ContentId = "enrollProcessID"};

        htmlView.LinkedResources.Add(imageResourceLink);

        mail.AlternateViews.Add(plainView);
        mail.AlternateViews.Add(htmlView);

        var smtp = new SmtpClient("internalSMTP");
        smtp.Send(mail);
    }
5
задан Refracted Paladin 23 April 2010 в 15:19
поделиться

2 ответа

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

Кроме того, если я укажу неправильный путь к файлу - он немедленно выдаст исключение, заявив, что файл не найден:)

Если вы этого не сделаете Я не получаю изображение в свой почтовый ящик, возможно, его фильтруют фильтры спама .. Я исключаю здесь настройки сервера smtp, потому что вы говорите, что отправка версии только с открытым текстом работает :)

UPD: Из личного опыта я рекомендую изменить кодировку на UTF8. Это был один из критериев, по которым мои почтовые сообщения были удалены фильтрами спама. Кроме того, ваш код выглядит нормально, и я не вижу причин, по которым он не работает .. В конце концов, он работает на моей стороне: )

2
ответ дан 15 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: