从Windows服务发送电子邮件:交易失败。服务器响应是5.7.1客户端主机被拒绝访问被拒绝

时间:2018-04-19 09:37:08

标签: c# smtp windows-services

以下代码在Windows窗体中运行正常,但无法在Windows服务中运行。 该服务在Windows XP上运行。

我已尝试更改登录用户,但无效。

  

错误:交易失败。服务器响应是5.7.1客户端主机   被拒绝访问被拒绝

private void SendEmailToHO()
{
    try
    {
        int mailSentSuccessfully = 0;

        MailAddress to = new MailAddress(mailTo);
        MailAddress from = new MailAddress(mailFrom);

        using (MailMessage mail = new MailMessage(from.Address, to.Address))
        {

            int attachmentCount = 0;

            try
            {
                foreach (string fileName in fileEntries)
                {
                    Attachment attachment = new Attachment(fileName);
                    mail.Attachments.Add(attachment);
                    attachmentCount++;
                }

                SmtpClient client = new SmtpClient(mailHost, port);
                if (enableSSL == "Y")
                {
                    client.EnableSsl = true;
                }
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential(mailUser, mailPassword);

                mail.Subject = "Email Subject " + clientID;
                mail.Body = "Attached please find the files: " + clientIDTitle;

                if (attachmentCount > 0)
                {
                    //
                    client.Send(mail);

                    //if no error, this code will work.
                    mailSentSuccessfully = 1;

                    new MyApp.LogWriter("Sent mail to " + to.Address + ", \nAttachment count = " + attachmentCount);
                }
                else
                {
                    new MyApp.LogWriter("Attachment count = " + attachmentCount);
                }
            }
            catch (Exception ex)
            {
                new MyApp.LogWriter("Send mail failed. Cause: " + ex.Message
                                          + "\n Inner Exception: " + ex.InnerException);
            }
        }
    }
    catch (System.Exception ex)
    {
        new BTCClient.LogWriter("Email Error '" +
                           ex.Message + "'");
    }
}

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,要解决此问题,您需要联系电子邮件服务器的服务提供商,并告诉他们授予对服务器IP的访问权限。