我正在尝试编写程序的一部分,通过调用向管理员发送电子邮件的URL来通知管理员客户端数据已更新/发送。我成功地做到了这一点,但仅限于Windows 7和2003.我需要它在Windows服务器2008上运行。它还需要通过在调用url时隐藏用户的Web浏览器。如果我让浏览器窗口打开,我已成功发送电子邮件,但如果我尝试隐藏窗口,它总是会失败。 我使用的代码如下:
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url += strNewValue);
// execute the request
HttpWebResponse response = (HttpWebResponse)wr.GetResponse();
Stream resStream = response.GetResponseStream();
response.Close();
/*
WebBrowser web = new WebBrowser();
web.AllowNavigation = true;
web.Visible = false;
web.Navigate(url+strNewValue);
*/
/*
ProcessStartInfo startweb = new ProcessStartInfo(url + strNewValue);
startweb.RedirectStandardOutput = false;
startweb.WindowStyle = ProcessWindowStyle.Hidden;
startweb.UseShellExecute = true;
startweb.CreateNoWindow = true;
Process.Start(startweb);
*/
注释代码显示了我尝试使其工作的其他尝试。这段代码似乎都可以在Windows 2007和Windows Server 2003上成功运行,但我无法让它在Windows 2008 Server上运行,这是必须的。
每次进入应用程序代码的这一部分时,程序都开始不响应,最终恢复并说它已发送通知。但是,它在应用程序中此时冻结,并且永远不会发送电子邮件。我已经检查了这个URL,它在手动完成时发送电子邮件没有任何问题。我目前正在使用.NET 4.0客户端软件包,如果这可能导致任何问题。我得到的唯一错误是httpwebresponse getresponse();
的超时错误任何建议都会非常有帮助。提前谢谢
答案 0 :(得分:0)
您可以改为从System.Net.Mail
命名空间配置对象,例如SmtpClient
并直接发送电子邮件吗?这个解决方案在发送电子邮件时引入了一个看似不必要且复杂/容易出现故障的过程,这是一个以编程方式完成的相当简单的任务。