繁体   English   中英

通过使用C#嵌入图像的Windows服务发送自动电子邮件

[英]Send Automated Email through Windows Service that has an embedded image using C#

我已经有一个C#windows服务,我们在内部使用它来监控网络上的目录,当它检测到更改时,使用我们的内部SMTP服务器向指定的人群发送电子邮件。

现在我需要在自动电子邮件中嵌入一个图像。 我知道我需要创建一个AlternateView和一个Linked Resource,并在AlternateView中使用Linked Resource的cID ,这是正确的。

我不明白的是我在哪里放图像? 我应该将它添加到我的服务项目并将Copy to Output Directory = Copy Always设置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);
    }

实际上,你错误地解释了这里的错误..你的代码绝对没问题,只要我仔细检查一下,我把它复制到一个简单的应用程序中,更新了本地路径到图像并运行它 - 我立即收到电子邮件..

另外,如果我给它一个错误的文件路径 - 它会立即抛出异常,说明找不到该文件:)

如果您没有收到邮箱中的图像,可能是垃圾邮件过滤器正在过滤它..我在这里排除了smtp服务器设置,因为你说只发送纯文本版本有效:)

UPD:我从个人经验中推荐的是将编码改为UTF8。 这是我的邮件被垃圾邮件过滤器删除的标准之一..除此之外 - 你的代码看起来很好,我认为没有任何理由不能工作..毕竟它确实在我身边起作用: )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM