Я разработал сервис, используя Topshelf для отправки статистики сервера по электронной почте.Все в порядке и прекрасно работает при выполнении Visual Studio 2017, но (всегда существует около ...), когда служба установлена и запущена, просто отправьте электронные письма на gmail.com, yahoo.com и другие популярные почтовые сервисы.Но не для электронной почты, связанной с моей компанией.Это любопытно, потому что когда я выполняю службу как решение в соответствии с VS2017, она отправляет штраф на ЛЮБОЙ адрес электронной почты.
Подводя итог: -Если я выполняю решение через IDE VS2017, то решение отправляет на любой адрес электронной почты.-Если я установил службу и запустил ее, она просто отправляла на обычные адреса электронной почты, такие как 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, если у меня есть код, если кто-то хочет его увидеть.
Заранее спасибо за вашепомощь!