c# - Topshelf 服务不发送电子邮件
问题描述
我使用 Topshelf 开发了一项服务,通过电子邮件发送一些服务器统计信息。在 Visual Studio 2017 执行下一切正常,但(始终存在于...)当服务安装并启动时,只需向 gmail.com、yahoo.com 和其他流行的电子邮件服务发送电子邮件。但不适用于与我公司关联的电子邮件。这很奇怪,因为当我在 VS2017 下将服务作为解决方案执行时,它可以很好地发送到任何电子邮件地址。
总结一下: - 如果我通过 VS2017 IDE 执行解决方案,那么解决方案将发送到任何电子邮件地址。- 如果我安装并启动该服务,它通常只会发送到电子邮件地址,例如 gmail.com、yahoo.com 等。但不会发送到与我公司关联的地址。
顺便说一句:Outlook 不会过滤任何电子邮件地址。
#region Send email using a simple SMPT .net client
private bool SendEmail(Email d)
{
bool resul = false;
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpClient = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress(d.EmailAddress);
mail.To.Add(d.EmailAddress);
mail.Subject = d.Subject;
LinkedResource linkedImg = new LinkedResource(@"charts\\mockChart.jpg");
linkedImg.ContentId = "mockChart";
linkedImg.ContentType = new ContentType(MediaTypeNames.Image.Jpeg);
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(
"Dear Mr/Ms " + d.Name + " " + d.surname1 +
"</br></br>" + d.Body + "\n <img src=charts\\mockChart.jpg>",
null, "text/html");
htmlView.LinkedResources.Add(linkedImg);
mail.AlternateViews.Add(htmlView);
mail.Attachments.Add(new System.Net.Mail.Attachment("charts\\mockChart.jpg"));
SmtpClient.UseDefaultCredentials = false;
SmtpClient.Port = 587;
SmtpClient.Credentials = new NetworkCredential("anemail@address.com", "blablabla");
SmtpClient.EnableSsl = true;
SmtpClient.Send(mail);
resul = true;
Console.WriteLine(FileController.writeDataIntoALog("MAIL SENT TO " + d.EmailAddress, FileController.fileStr));
}
catch (Exception e)
{
StringBuilder sb = new StringBuilder();
sb.Append(e.Message);
sb.Append(e.StackTrace);
FileController.writeDataIntoALog(sb.ToString(), FileController.fileStr);
Console.WriteLine(e.Message);
resul = false;
}
return resul;
}
这是一个有效的简单代码!...但是... :( 但是我说只是在 Visual Studio 执行下发送到公司电子邮件。
顺便说一句:我使用的是 Exchange 服务器,但我无法在 Exchange 服务器下发出 SOAP 请求来发送电子邮件,如果有人想看到我有代码的话。
在此先感谢您的帮助!
解决方案
啊啊啊!;-) 解决了!
问题是我的 VS2017 是在我的具有管理员权限的帐户下运行的,但是安装的服务没有使用我的具有此权限的帐户。
Services.exe --> 右键单击服务 --> 属性 --> 启动会话选项卡,然后检查正确的帐户。
PS:对不起我的“西班牙截图”;-)
推荐阅读
- vue.js - Vue Composition API 中的反应式
- c - 24 小时到 12:00 时间,进入 12:00 时出现问题,
- android - 如何解决 Android 上的点击/触摸冲突?
- python - 如何解析来自 JSON 请求的数据?
- javascript - 删除隐藏/显示库存工具 GUI 的箭头
- linux - 使用 IOMMU 的 GPU 直通
- java - 无法通过 Jenkins 管道将工件部署到 Nexus 3
- python - Brightcove API - 如何使用请求获取访问令牌?
- python - 烧瓶 CSV 到 HTML 表
- firebase - FCM 消息编写器目标用户段有 0 个用户