C#:Windows 自动邮件服务不起作用

发布于 2024-12-06 17:21:21 字数 509 浏览 1 评论 0原文

我想创建简单的服务,它会定期下载电子邮件地址列表并向他们发送电子邮件。

我开始编写该服务,在此之前我测试了电子邮件发送是否有效 - 是的,它确实有效。

问题是,虽然我通过简单地使用 Main() 中的邮件方法发​​送电子邮件时没有超时,但当我尝试在将代码作为服务执行时(使用 InstallUtil. exe,然后转到我的电脑/管理并启动服务)

我想这一定是一些权限/特权问题,但完全不知道如何解决它 - 我尝试关闭防火墙但没有效果。当我在 onStart()、onStop() 方法或服务启动的线程中调用邮件方法时 - 我无法“连接到远程服务器”。我尝试使用不同的端口和 SMTP 服务器,但它们都是一样的 - 只要我在非服务程序中运行代码,它就可以工作。我尝试了不同的服务设置 - LocalSystem、NetworkService itp - 都是一样的。

对 Windows 注册表的任何更改也是如此 - 我可以在执行 Main() 时甚至在服务安装程序中进行读/写 - 但当服务想要使用它时它不起作用。

请帮忙!

I wanted to create simple service, which would periodically download a list of e-mail adresses and send them e-mails.

I started writing the service, and before that I tested, if the e-mail sending works - and yes, it does.

The problem is, that whereas I get no timeouts while sending e-mails by simply using the mailing method in Main() I get the timeouts and exceptions, when I try to do the same while executing the code as a service (using InstallUtil.exe, then going to My computer/manage and starting the service)

I guess it has to be some permissions/privileges issue, but have completely no idea, how to solve it - I tried to turn the firewalls off with no effect. When I call the mailing method in onStart(), onStop() methods or in the thread that the service starts - I'm unable to "connect to remote server". I tried using different ports and SMTP servers, but it's all the same - it works as long as I run the code in a non-service program. I tried different service settings - LocalSystem, NetworkService itp - all the same.

The same goes with any changes to the Windows Registry - I can do the reading/writing while the Main() is being executed or even in the service installer - but it doesn't work when the service wants to use it.

Please help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

给我一枪 2024-12-13 17:21:21

服务在不同的帐户下运行。 (通常是服务)

您需要确保您的代码考虑到了这一点。当您以交互模式运行时,您将使用当前凭据运行。

您是否将所有异常记录到日志文件中?由于服务没有用户界面,因此您需要将任何错误记录到日志文件或事件日志中。

Services run under a different account. (Typically SERVICE)

You need to make sure that your code accounts for this. When you are running in an interactive mode, you are running with your current credentials.

Are you recording all exceptions to a log file? Since a service has no user interface, you will need to record any errors either to a log file or to the event log.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文