Я создал консольное приложение посредством визуального studio (c#), чтобы осуществлять поставку электронных почт в отличных расписаниях в день, совсем посредством timer. До сих пор хорошо, testeé и функционируй правильно. То, в чем я нуждаюсь сейчас, состоит в том, чтобы мочь выполнять мое приложение, и что прокрутил изображение в окне постоянно для того, чтобы он смог осуществлять эту поставку электронных почт автоматического способа, для которого я создал задание, запрограммированное в windows. Там - проблема: выполни приложение правильной формы, но в момент осуществления поставки mails он это не делает. Я не думаю, что проблема находится в моем коде, так как, когда я отлаживаю с визуального, оно функционирует хорошо, но когда запрограммированное задание это называет не, но из-за сомнений далее posteo код (иметь в виду, что расписания фиктивные, чтобы отправление почты мочь testear):
public class Program
{
static System.Timers.Timer timer1 = new System.Timers.Timer(30000);
static void Main(string[] args)
{
timer1.AutoReset = true;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
timer1.Start();
Console.Read();
}
private static void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
EnviarMail.Correo mail = new EnviarMail.Correo();
//Horas de envio
var horaEnvio = "09:05:00";
var horaEnvio2 = "09:06:00";
var partesHoraEnvio = horaEnvio.Split(new char[1] { ':' });
var partesHoraEnvio2 = horaEnvio2.Split(new char[1] { ':' });
//Hora actual
var fechaHoraActual = DateTime.Now;
//Convierto el string de la hora actual en un integer
var fechaHoraEnvio = new DateTime(fechaHoraActual.Year, fechaHoraActual.Month, fechaHoraActual.Day,
int.Parse(partesHoraEnvio[0]), int.Parse(partesHoraEnvio[1]), int.Parse(partesHoraEnvio[2]));
var fechaHoraEnvio2 = new DateTime(fechaHoraActual.Year, fechaHoraActual.Month, fechaHoraActual.Day,
int.Parse(partesHoraEnvio2[0]), int.Parse(partesHoraEnvio2[1]), int.Parse(partesHoraEnvio2[2]));
//Declaro variable de tipo timespan
TimeSpan ts;
TimeSpan ts2;
//Comparo: si la hora de envío es mayor a la actual
if (fechaHoraEnvio > fechaHoraActual)
//Mi variable de timespan equivale a la resta entre hora de envío y hora actual
ts = fechaHoraEnvio - fechaHoraActual;
else
{
//Añado a mi hora de envío 1 día
fechaHoraEnvio = fechaHoraEnvio.AddDays(1);
//Vuelvo a restar hora de envío y hora actual
ts = fechaHoraEnvio - fechaHoraActual;
}
if (fechaHoraEnvio2 > fechaHoraActual)
//Mi variable de timespan equivale a la resta entre hora de envío y hora actual
ts2 = fechaHoraEnvio2 - fechaHoraActual;
else
{
//Añado a mi hora de envío 1 día
fechaHoraEnvio2 = fechaHoraEnvio2.AddDays(1);
//Vuelvo a restar hora de envío y hora actual
ts2 = fechaHoraEnvio2 - fechaHoraActual;
}
//Espero el tiempo de mi timespan y ejecuto el envío del correo.
Task.Delay(ts).ContinueWith((x) => mail.enviarCorreo());
Task.Delay(ts2).ContinueWith((x) => mail.enviarCorreo());
timer1.Stop();
}
catch (Exception ex)
{
//LogController.save(this, ex);
}
}
}
Также я хотел бы направить мое прозрачное приложение накануне пользователя, а следовательно я попробовал скрывать консоль, но одинокое заканчивается завершением приложения. Я создал услугу windows в замене, но в момент не устанавливания этого также функционируй. Пожалуйста, если кто-то знает, как делать это, что был прозрачным, он был бы большой помощи.
С другой стороны... точно в последней командной строке я поместил //LogController.save(this, ex);
и будь прокомментирован, так как в существо статический метод не берет мне "this", но также я не знаю, как ссылаться на объект, который был бы должен происходить с ним..., в настоящее время позвони в функцию "save" класса "LogController":
public static void save(object obj, Exception ex)
{
string filename = string.Format("LOG_{0:yyyy.MM.dd_hh.mm.ss}.txt", DateTime.Now);
string filePath = @"C:\Users\KGL\source\repos\Servicio\Logs\";
string path = Path.Combine(filePath, filename);
string hora = System.DateTime.Now.ToString("HH:mm:ss");
StreamWriter sw = new StreamWriter(path, true);
StackTrace stacktrace = new StackTrace();
sw.WriteLine(obj.GetType().FullName + " " + hora);
sw.WriteLine(stacktrace.GetFrame(1).GetMethod().Name + " - " + ex.Message);
sw.WriteLine("");
sw.Flush();
sw.Close();
MailMessage correo = new MailMessage();
System.Net.Mail.SmtpClient envio = new System.Net.Mail.SmtpClient(); //Verifica si el correo y password ingresados son válidos
//Limpio campos si ya escribí destinatarios anteriormente
correo.To.Clear();
correo.Body = "";
correo.Subject = "";
correo.IsBodyHtml = true;
//Asigno valores
correo.To.Add(new MailAddress("email@example.com"));
correo.From = new MailAddress("email@example.com");
correo.Subject = "Error";
correo.SubjectEncoding = System.Text.Encoding.UTF8;
correo.Body = "Mensaje automatico - favor de no responder";
//Defino parámetros de cliente
envio.Port = 25;
envio.EnableSsl = true;
envio.Host = "xxxxx";
envio.Credentials = new NetworkCredential("email@example.com", "password");
envio.Timeout = 10000;
//Para adjuntar archivo
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(path);
correo.Attachments.Add(attachment);
envio.Send(correo);
}
Спасибо заранее из-за Вашей помощи.
Давно я был должен делать один Windows Service
, который посылал email
и был программируемым, каждый 30min. Я принял решение сделать это configurable и это что-то похожее на то, что ты пробуешь сделать.
взял свободу приспосабливания простого примера создавая одну aplicaciГіn Консоли с услугой windows, который посылает электронные почты каждое столько время.
Дает click здесь , чтобы загружать складку примера.
объяснил Тебе:
Добавил Log4Net
: это одна librerГ - в бесплатную, что позволяет нам включать в нашей aplicaciГіn функциональность “logging” формы rГЎpida и простая.
Para que Log4Net, что я функционировал правильно, - необходим:
Добавлять эту линию в AssemblyInfo.cs
//Log4Net
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
Добавлять эту secciГіn в app.config
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="./logs/ServicioDePrueba.log" />
<rollingStyle value="Date" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level [%thread] %logger{1} - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
Создавать инстанцию ILog
//log para crear archivo de log y ver si algo esta fallando
private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Использовать методы.Error.Info, segГєn было необходимо, чтобы производить log.
Logger.Info("Programa iniciado: " + DateTime.Now);
Logger.Error(ex.Message, ex);
Как только была добавлена услуга нужно давать ему право клик в файле услуги, которая находится в браузере решений, и выбирать ее opciГіn ver código
.
cГіdigo услуги остался asГ-:
using log4net;
using ServicioDePrueba.Helper;
using ServicioDePrueba.Infos;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.ServiceProcess;
namespace ServicioDePrueba
{
partial class ServicioDePrueba : ServiceBase
{
#region Declaraciones
//Tomo esta valor del config y le digo cada cuantos minutos se va ejecutar
private const string TimerMinKey = "Timer.Min";
//Aqui toma los datos para el envio del email desde web.config
private const string MailBodyKey = "Mail.Body";
private const string MailSubjectKey = "Mail.Subject";
private const string MailAuthUserKey = "Mail.Auth.User";
//Si esta habilitado el modo pruebas mando correo al email configurado como para pruebas
private const string SendTestModeKey = "Send.TestMode";
private const string SendTestEmailsKey = "Send.TestEmails";
private System.Timers.Timer _timer = null;
//log para crear archivo de log y ver si algo esta fallando
private readonly ILog _logger;// = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion Declaraciones
public ServicioDePrueba(ILog logger)
{
InitializeComponent();
_logger = logger;
}
protected override void OnStart(string[] args)
{
_logger.Info("Servicio iniciado.");
//Si no se configuraron los minutos pongo 5 por default
var strMin = ConfigurationManager.AppSettings[TimerMinKey] ?? "5";
_logger.Info("Timer " + strMin);
int.TryParse(strMin, out int minutos);
int.TryParse(strMin, out minutos);
_logger.Info("Set Timer Min " + strMin);
_timer = new System.Timers.Timer(60 * 1000 * minutos);
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Enabled = true;
_timer.Start(); // <- important
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
_logger.Info("Timer Elapse ");
_timer.Enabled = false;
_logger.Info("Timer Enabled = false ");
//Cada tantos minutos configurados que pasen, se ejecuta el proceso
ExecuteProcess();
}
internal void ExecuteProcess()
{
_logger.Info("Procesando Orders ");
try
{
//Esta lista la tengo aqui fija, pero nose si se pueda cambiar y tomarse de uan BD o servicio.
var listaEmails = new List<String>()
{
"email@empresa.com",
"email2@empresa.com;otromeail@empresa.com",//Pueden ser varios separados por ;'
"email3@empresa.com",
"email3@empresa.com",
"email5@empresa.com",
};
//Procesar cada email
foreach (var destinatario in listaEmails)
{
try
{
MailHelper mailHelper = new MailHelper(_logger);
var testMode = (ConfigurationManager.AppSettings[SendTestModeKey] ?? "") == "1";
var testEmails = ConfigurationManager.AppSettings[SendTestEmailsKey];
var body = ConfigurationManager.AppSettings[MailBodyKey];
var subject = ConfigurationManager.AppSettings[MailSubjectKey];
var sender = ConfigurationManager.AppSettings[MailAuthUserKey];
MailDataInfo mailData = new MailDataInfo();
mailData.Body = body;
mailData.Subject = subject;
var stringEmails = testMode ? testEmails : destinatario;// pueden ser varios emails separados por ;
var emails = stringEmails.Split(';');
mailData.Emails = new List<string>();
int count = 0;
foreach (var email in emails)
{
if (count == 0)
{
mailData.Recipient = email;
}
else
{
mailData.Emails.Add(email);
}
count++;
}
//mailData.Recipient = sentRequest.Emails;
mailData.Sender = sender;
///Si se quieres agregar algun archivo adjunto
//mailData.AttachmentFiles = new List<MailAttachmentFileInfo>();
//MailAttachmentFileInfo xmlFile = new MailAttachmentFileInfo
//{
// FileName = "estearchivo.pdf",
// FilePath = "c:/algo/estearchivo.pdf"
//};
//mailData.AttachmentFiles.Add(xmlFile);
var result = mailHelper.Send(mailData);
if (result.success)
{
_logger.Info("Email Enviado.");
_logger.Info(result.message);
}
else
{
_logger.Info("Envio de email fallido.");
_logger.Warn(result.message);
}
}
catch (Exception e)
{
_logger.Info("Error: " + e.Message, e);
}
}
if (_timer != null)
{
_timer.Enabled = true;
_logger.Info("Timer Enabled = true ");
}
}
catch (Exception e)
{
_logger.Info("Error: " + e.Message, e);
if (_timer != null)
{
_timer.Enabled = true;
_logger.Info("Timer Enabled = true ");
}
}
}
protected override void OnStop()
{
_logger.Info("Servicio de prueba detenido. ");
}
}
}
объяснил Тебе части:
В Заявлениях или переменных у нас есть с одной стороны все keys (стоимость strings), что определяют имя keys в нашем app.config
; также - varaible _logger
, которые служит для того, чтобы произвести log и Timer, главная цель которого будет состоять в том, чтобы повторять или выполнять процесс segГєn время, запрограммированное в app.config
, строитель , который он получает как parГЎmetro ILog
.
mГ©todo OnStart
, который, где мы будем инициализировать Timer
asignГЎndole период времени времени для каждый ejecuciГіn.
mГ©todo timer_Elapse
, который только берется за то, чтобы называть себе выполнять процесс каждый раз, когда они провели минуты, конфигурировавшие в app.config
.
И в конце концов ExecuteProcess()
, который, где irГЎn все правила дела Услуги, в этом примере funciГіn cГіdigo состоит в том, чтобы посылать ее электронная почта, для этого добавил еще несколько классов и произведите какие-то организации, между другими вещами.
Добавлять key к app.config
<appSettings>
<add key="Send.TestMode" value="1" />
<add key="Send.TestEmails" value="destinatarioPrueba@gmail.com;destinatarioPrueba2@hotmail.com" />
<add key="Timer.Min" value="3" />
<add key="Mail.Subject" value="Servicio de correo de pruebas" />
<add key="Mail.Body" value=" <p>Estimado(a) client(a): </p> <br><p>Correo de ejemplo de pruebas.<p><br><hr><br><b>ATENCIÓN:</b> Por favor, no responda a este mensaje, este buzón no es atendido." />
<add key="Mail.Server" value="smtp.gmail.com" />
<add key="Mail.Port" value="587" />
<add key="Mail.Auth.User" value="noResponder@gmail.com" />
<add key="Mail.Auth.Pass" value="********" />
<add key="Mail.EnableSSL" value="1" />
</appSettings>
Изменило program.cs и я остаюсь следующего способа:
using log4net;
using System;
using System.ServiceProcess;
namespace ServicioDePrueba
{
internal class Program
{
//log para crear archivo de log y ver si algo esta fallando
private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private static void Main(string[] args)
{
Logger.Info("Programa iniciado: " + DateTime.Now);
#if (!DEBUG)
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new ServicioDePrueba(Logger)
};
ServiceBase.Run(ServicesToRun);
#else
ServicioDePrueba myServ = new ServicioDePrueba(Logger);
myServ.ExecuteProcess();
// here Process is my Service function
// that will run when my service onstart is call
// you need to call your own method or function name here instead of Process();
#endif
Logger.Info("Programa Finalizado: " + DateTime.Now);
}
}
}
Из этой формы только берется за то, чтобы скроллировать Услугу и уже не ведет себя как одна aplicaciГіn консоли.
ЗАМЕЧАЕТ: Услуги не могут распространяться прямо, asГ - что добавил один #if (!DEBUG)
для того, чтобы он смог прокручивать изображение в окне в способе Debug
, создавая инстанцию услуги, прямо не делая вызова ServiceBase
, но это важно в момент произвождения ее versiГіn instalable мы уверяем имения Release
, выбранного в выборах Визуального Studio .
Agregar instalador
. Это необходимо, чтобы мочь скроллировать команду instalaciГіn Услуг windows. добавит файл ProjectInstaller.cs
, мы даем ему право клик и Ver código
.
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Threading.Tasks;
namespace ServicioDePrueba
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
}
Однажды allГ - мы даем право клик в InitializeComponent()
и выбираем идти в definiciГіn, или F12. В этой secciГіn мы можем добавлять данные о нашей Услуге.
//
// serviceInstaller1
//
this.serviceInstaller1.Description = "Este solo es un servicio de prueba que envia emails.";
this.serviceInstaller1.DisplayName = "ServicioDePrueba";
this.serviceInstaller1.ServiceName = "ServicioDePrueba";
Эти данные - те, которых мы увидим в Услугах Windows, или в Task Manager
Производить будьте Перечитан. И копировать файлы папка, где serГЎ установленный Услуга, может быть c:\Servicios\Ejemplo
Устанавливать Услугу. Для этого есть несколько форм, может быть с CMD
или с Developer Command Prompt
, я это сделал со второй opciГіn.
Нужно принимать несколько вещей во внимание; Сначала скроллировать Developer Command Prompt
как администратор, и секунда, когда он попросит у нас счет пользователя помещать ./userName
или computerName/userName
иначе, помечает нам ошибку и использовать локальный счет с contraseГ±a.
task manger
или в услугах windows, но как задержанный... asГ - что нужно конфигурировать услугу для того, чтобы он инициализировался automГЎtico, выбирать пользователь, быть инициализировать это. Файл LOG
serГЎ произведенный automГЎticamente после того, как инициализировали услугу.
ты Это можешь находить в папке Logs/ServicioDePrueba.log и имя будет тем, которого мы определяем в app.config
, в secciГіn Log4Net
2019-11-10 00:57:09,088 INFO [1] Program - Programa iniciado: 10/11/2019 12:57:09 a. m.
2019-11-10 00:57:09,100 INFO [1] Program - Procesando Orders
2019-11-10 00:57:10,545 INFO [1] Program - Email Enviado.
2019-11-10 00:57:10,546 INFO [1] Program - Email Enviado.
2019-11-10 00:57:11,839 INFO [1] Program - Email Enviado.
2019-11-10 00:57:11,840 INFO [1] Program - Email Enviado.
2019-11-10 00:57:13,036 INFO [1] Program - Email Enviado.
2019-11-10 00:57:13,037 INFO [1] Program - Email Enviado.
2019-11-10 00:57:14,205 INFO [1] Program - Email Enviado.
2019-11-10 00:57:14,205 INFO [1] Program - Email Enviado.
2019-11-10 00:57:15,474 INFO [1] Program - Email Enviado.
2019-11-10 00:57:15,474 INFO [1] Program - Email Enviado.
2019-11-10 00:57:15,475 INFO [1] Program - Programa Finalizado: 10/11/2019 12:57:15 a. m.
2019-11-10 00:58:28,350 INFO [1] Program - Programa iniciado: 10/11/2019 12:58:28 a. m.
2019-11-10 00:58:28,359 INFO [1] Program - Procesando Orders
2019-11-10 00:58:29,670 INFO [1] Program - Email Enviado.
2019-11-10 00:58:29,670 INFO [1] Program - Email Enviado.
2019-11-10 00:58:30,887 INFO [1] Program - Email Enviado.
2019-11-10 00:58:30,888 INFO [1] Program - Email Enviado.
2019-11-10 00:58:32,054 INFO [1] Program - Email Enviado.
2019-11-10 00:58:32,054 INFO [1] Program - Email Enviado.
2019-11-10 00:58:33,384 INFO [1] Program - Email Enviado.
2019-11-10 00:58:33,385 INFO [1] Program - Email Enviado.
2019-11-10 00:58:34,612 INFO [1] Program - Email Enviado.
2019-11-10 00:58:34,612 INFO [1] Program - Email Enviado.
2019-11-10 00:58:34,612 INFO [1] Program - Programa Finalizado: 10/11/2019 12:58:34 a. m.
2019-11-10 00:59:06,997 INFO [1] Program - Programa iniciado: 10/11/2019 12:59:06 a. m.
2019-11-10 00:59:07,005 INFO [1] Program - Procesando Orders
2019-11-10 00:59:08,287 INFO [1] Program - Email Enviado.
2019-11-10 00:59:08,287 INFO [1] Program - Email Enviado.
2019-11-10 00:59:09,730 INFO [1] Program - Email Enviado.
2019-11-10 00:59:09,730 INFO [1] Program - Email Enviado.
2019-11-10 00:59:10,906 INFO [1] Program - Email Enviado.
2019-11-10 00:59:10,907 INFO [1] Program - Email Enviado.
2019-11-10 00:59:12,078 INFO [1] Program - Email Enviado.
2019-11-10 00:59:12,079 INFO [1] Program - Email Enviado.
2019-11-10 00:59:13,410 INFO [1] Program - Email Enviado.
2019-11-10 00:59:13,411 INFO [1] Program - Email Enviado.
2019-11-10 00:59:13,411 INFO [1] Program - Programa Finalizado: 10/11/2019 12:59:13 a. m.
2019-11-10 00:59:24,440 INFO [1] Program - Programa iniciado: 10/11/2019 12:59:24 a. m.
2019-11-10 00:59:24,450 INFO [1] Program - Procesando Orders
2019-11-10 00:59:25,766 INFO [1] Program - Email Enviado.
2019-11-10 00:59:25,767 INFO [1] Program - Email Enviado.
2019-11-10 00:59:26,947 INFO [1] Program - Email Enviado.
2019-11-10 00:59:26,948 INFO [1] Program - Email Enviado.
2019-11-10 00:59:28,127 INFO [1] Program - Email Enviado.
2019-11-10 00:59:28,127 INFO [1] Program - Email Enviado.
2019-11-10 00:59:29,324 INFO [1] Program - Email Enviado.
2019-11-10 00:59:29,324 INFO [1] Program - Email Enviado.
2019-11-10 00:59:30,556 INFO [1] Program - Email Enviado.
2019-11-10 00:59:30,556 INFO [1] Program - Email Enviado.
2019-11-10 00:59:30,556 INFO [1] Program - Programa Finalizado: 10/11/2019 12:59:30 a. m.
2019-11-10 01:00:34,502 INFO [1] Program - Programa iniciado: 10/11/2019 01:00:34 a. m.
2019-11-10 01:00:34,510 INFO [1] Program - Procesando Orders
2019-11-10 01:00:36,017 INFO [1] Program - Email Enviado.
2019-11-10 01:00:36,017 INFO [1] Program - Email Enviado.
2019-11-10 01:00:37,208 INFO [1] Program - Email Enviado.
2019-11-10 01:00:37,208 INFO [1] Program - Email Enviado.
2019-11-10 01:00:38,409 INFO [1] Program - Email Enviado.
2019-11-10 01:00:38,410 INFO [1] Program - Email Enviado.
2019-11-10 01:00:39,646 INFO [1] Program - Email Enviado.
2019-11-10 01:00:39,646 INFO [1] Program - Email Enviado.
2019-11-10 01:00:40,835 INFO [1] Program - Email Enviado.
2019-11-10 01:00:40,835 INFO [1] Program - Email Enviado.
2019-11-10 01:00:40,836 INFO [1] Program - Programa Finalizado: 10/11/2019 01:00:40 a. m.
2019-11-10 01:04:07,438 INFO [1] Program - Programa iniciado: 10/11/2019 01:04:07 a. m.
2019-11-10 01:04:07,445 INFO [1] Program - Procesando Orders
2019-11-10 01:04:08,920 INFO [1] Program - Email Enviado.
2019-11-10 01:04:08,920 INFO [1] Program - Email Enviado.
2019-11-10 01:04:10,093 INFO [1] Program - Email Enviado.
2019-11-10 01:04:10,093 INFO [1] Program - Email Enviado.
2019-11-10 01:04:11,338 INFO [1] Program - Email Enviado.
2019-11-10 01:04:11,338 INFO [1] Program - Email Enviado.
2019-11-10 01:04:12,534 INFO [1] Program - Email Enviado.
2019-11-10 01:04:12,534 INFO [1] Program - Email Enviado.
2019-11-10 01:04:13,709 INFO [1] Program - Email Enviado.
2019-11-10 01:04:13,710 INFO [1] Program - Email Enviado.
2019-11-10 01:04:13,710 INFO [1] Program - Programa Finalizado: 10/11/2019 01:04:13 a. m.
2019-11-10 01:07:19,550 INFO [1] Program - Programa iniciado: 10/11/2019 01:07:19 a. m.
2019-11-10 01:07:19,557 INFO [4] Program - Servicio iniciado.
2019-11-10 01:07:19,558 INFO [4] Program - Timer 3
2019-11-10 01:07:19,558 INFO [4] Program - Set Timer Min 3
2019-11-10 01:10:19,560 INFO [5] Program - Timer Elapse
2019-11-10 01:10:19,560 INFO [5] Program - Timer Enabled = false
2019-11-10 01:10:19,563 INFO [5] Program - Procesando Orders
2019-11-10 01:10:24,365 INFO [5] Program - Email Enviado.
2019-11-10 01:10:24,365 INFO [5] Program - Email Enviado.
2019-11-10 01:10:25,601 INFO [5] Program - Email Enviado.
2019-11-10 01:10:25,602 INFO [5] Program - Email Enviado.
2019-11-10 01:10:26,840 INFO [5] Program - Email Enviado.
2019-11-10 01:10:26,840 INFO [5] Program - Email Enviado.
2019-11-10 01:10:29,099 INFO [5] Program - Email Enviado.
2019-11-10 01:10:29,100 INFO [5] Program - Email Enviado.
2019-11-10 01:10:30,286 INFO [5] Program - Email Enviado.
2019-11-10 01:10:30,287 INFO [5] Program - Email Enviado.
2019-11-10 01:10:30,287 INFO [5] Program - Timer Enabled = true
2019-11-10 01:13:30,298 INFO [8] Program - Timer Elapse
2019-11-10 01:13:30,298 INFO [8] Program - Timer Enabled = false
2019-11-10 01:13:30,298 INFO [8] Program - Procesando Orders
2019-11-10 01:13:31,504 INFO [8] Program - Email Enviado.
2019-11-10 01:13:31,504 INFO [8] Program - Email Enviado.
2019-11-10 01:13:32,701 INFO [8] Program - Email Enviado.
2019-11-10 01:13:32,701 INFO [8] Program - Email Enviado.
2019-11-10 01:13:33,940 INFO [8] Program - Email Enviado.
2019-11-10 01:13:33,941 INFO [8] Program - Email Enviado.
2019-11-10 01:13:35,134 INFO [8] Program - Email Enviado.
2019-11-10 01:13:35,134 INFO [8] Program - Email Enviado.
2019-11-10 01:13:36,310 INFO [8] Program - Email Enviado.
2019-11-10 01:13:36,311 INFO [8] Program - Email Enviado.
2019-11-10 01:13:36,311 INFO [8] Program - Timer Enabled = true
2019-11-10 01:16:36,324 INFO [9] Program - Timer Elapse
2019-11-10 01:16:36,325 INFO [9] Program - Timer Enabled = false
2019-11-10 01:16:36,325 INFO [9] Program - Procesando Orders
2019-11-10 01:16:37,689 INFO [9] Program - Email Enviado.
2019-11-10 01:16:37,689 INFO [9] Program - Email Enviado.
2019-11-10 01:16:39,939 INFO [9] Program - Email Enviado.
2019-11-10 01:16:39,940 INFO [9] Program - Email Enviado.
2019-11-10 01:16:44,180 INFO [9] Program - Email Enviado.
2019-11-10 01:16:44,181 INFO [9] Program - Email Enviado.
2019-11-10 01:16:46,442 INFO [9] Program - Email Enviado.
2019-11-10 01:16:46,443 INFO [9] Program - Email Enviado.
2019-11-10 01:16:47,647 INFO [9] Program - Email Enviado.
2019-11-10 01:16:47,647 INFO [9] Program - Email Enviado.
2019-11-10 01:16:47,648 INFO [9] Program - Timer Enabled = true
2019-11-10 01:17:27,052 INFO [10] Program - Servicio de prueba detenido.
2019-11-10 01:17:27,053 INFO [1] Program - Programa Finalizado: 10/11/2019 01:17:27 a. m.
, Если есть algГєn ошибка verГЎ немного asГ - в файле .log
2019-11-10 00:44:30,750 WARN [1] Program - Error al enviar email.
2019-11-10 00:44:31,198 ERROR [1] Program - El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Authentication Required. Learn more at
System.Net.Mail.SmtpException: El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Authentication Required. Learn more at
en System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
en System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode)
en System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
en System.Net.Mail.SmtpClient.Send(MailMessage message)
en ServicioDePrueba.Helper.MailHelper.Send(MailDataInfo mailData) en ServicioDePrueba\ServicioDePrueba\Helpers\MailHelper.cs:línea 104
2019-11-10 00:44:31,199 INFO [1] Program - Envio de email fallido.
2019-11-10 00:44:31,199 WARN [1] Program - Error al enviar email.
, Чтобы заставлять функционировать enviГі email
я, использовал smtp
gmail , из-за default gmail блокируй enviГі почты посредством приложений, если это случай, и если ты стремишься к тому, чтобы использовать gmail, нужно позволять приложения дает клик здесь , чтобы идти она configuraciГіn gmail.
Надеялся смочь помогать тебе с этим ответом, и что он полезен для большего количества членов сообщества. Любое сомнение ты можешь контактировать со мной, Привет.