Topshelf服务不发送电子邮件

时间:2018-10-03 07:36:21

标签: c# .net 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服务器,但是我无法发出SOAP请求以在Exchange服务器下发送电子邮件。如果我有想要看到的代码,那么

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

AHAAA! ;-)解决!

问题是我的VS2017在具有管理员权限的帐户下运行,但是安装的服务未在具有此权限的帐户下使用。

Services.exe->右键单击服务->属性->“启动会话”选项卡,然后检查正确的帐户。

Service Permisssions

PS:对不起,我的“西班牙语屏幕截图”;-)