我已经开发了一个附加现有文件的程序并且没有任何问题地发送它,当我尝试像Windows服务那样做时,问题出现了。 发送电子邮件的程序代码如下
try
{
Attachment attach = new Attachment(@"C:\Service\Files\Test.zip");
attach.Name = "Test";
string origen = usuario;
mail = new MailMessage();
mail.From = new MailAddress(buzon);
mail.To.Add(usuario);
mail.Subject = "Testing";
mail.IsBodyHtml = true;
mail.Attachments.Add(attach);
string htmlBody;
htmlBody = "Test file";
mail.Body = htmlBody;
cliente = new SmtpClient("smtp.test.es");
cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
cliente.UseDefaultCredentials = false;
cliente.Credentials = new System.Net.NetworkCredential(buzon, pass);
cliente.Send(mail);
}
catch (Exception ex)
{
Util.Logger.escribir(ex.ToString(), Util.Util.rutaServicioLog);
throw ex;
}
请记住,代码在服务和程序中是100%相同,SmtpClient(“smtp.test.es”)显然不是真实的。
错误日志包含以下内容:
System.Net.Mail.SmtpException:事务失败。服务器响应为:5.7.1< *******>:客户端主机被拒绝:访问被拒绝 在System.Net.Mail.RecipientCommand.CheckResponse(SmtpStatusCode statusCode,String response) 在System.Net.Mail.SmtpTransport.SendMail(MailAddress sender,MailAddressCollection recipients,String deliveryNotify,Boolean allowUnicode,SmtpFailedRecipientException& exception) 在System.Net.Mail.SmtpClient.Send(MailMessage消息) at *****(String usuario,String clave) 2016/09/06 12:50:18:Proceso erroneo email de ****** con fecha 06/09/2016 10:48:38Track:at ********(String usuario,String clave) 在*******(布尔& continua)来源:***** Excepcion:交易失败。服务器响应为:5.7.1 ******:拒绝客户端主机:拒绝访问
提前感谢您的帮助。
答案 0 :(得分:0)
该服务运行的用户对您调用的程序中的某些内容没有权限。将其作为服务运行,但将用户设置为管理员。 这将解决您的错误,但存在巨大的安全风险。
我强烈建议您查看here找到的各种内置选项,或根据您的权限需求创建自己的custom user。重要的是,该服务具有对程序运行绝对必要的权限。