我正在尝试制作一个每天自动发送邮件的Windows服务。我正在使用EWS从Exchange服务器发送邮件。
在计时器已过去的事件中,我正在调用所有发送邮件和所有邮件的处理。
我需要在邮件程序中发送嵌入的图像,并且需要从某些Html动态生成该图像。所以我使用了webbrowser控件并将其作为一个单独的线程运行。
第一种方法:我尝试将图像保存在本地系统中,并将其用作内联附件
第二种方法:我试图将图像保存在内存流中,然后在附件中使用该内存流。
在我在调试模式下运行此Windows服务应用程序并按F11执行逐行语句的两种情况下,一切正常。 我的意思是图像就是这种情况。
但是当我运行应用程序时,Windows服务邮件程序被发送,但图像空白。我试图附加一个预先存在的图像然后它确实工作正常。
但是当生成相同的图像并在内存流中使用它或将其保存在本地系统上然后将其用作附件时,在这种情况下,图像在邮件中显示为空白。
Here is the link for sending out the mails using EWS
以下是在单独的线程中运行webbrowser控件的代码
private static void StartBrowser(string htmlSource)
{
var th = new Thread(() =>
{
var webBrowser = new WebBrowser();
webBrowser.ScrollBarsEnabled = false;
webBrowser.DocumentCompleted +=
webBrowser_DocumentCompleted;
webBrowser.DocumentText = source;
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
static void
webBrowser_DocumentCompleted(
object sender,
WebBrowserDocumentCompletedEventArgs e)
{
var webBrowser = (WebBrowser)sender;
using (Bitmap bitmap =
new Bitmap(
webBrowser.Width,
webBrowser.Height))
{
webBrowser
.DrawToBitmap(
bitmap,
new System.Drawing
.Rectangle(0, 0, bitmap.Width, bitmap.Height));
bitmap.Save(@"filename.jpg",
System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
请帮帮我。我陷入了困境,浏览了很多东西但却无法理解。提前谢谢。