0

WS 2008 の新しいサービスに問題があります。私のサービスは Windows 7 のラボで実行されます。問題はありませんが、このサービスをサーバーに実装すると、実行されません。このサービスは、後で電子メールで送信するデータを提供します。このデータは私のフォルダー「共有」に保存されているxlsファイル。

    namespace WsEmail
    {

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public partial class WsMail : ServiceBase
    {
        FileSystemWatcher fsw = new FileSystemWatcher();
        Timer tm = new Timer();
        EventLog evLufran = new EventLog();

        public WsMail()
        {
            // Componentes a Iniciar
            InitializeComponent();
        }

        void tm_Elapsed(object sender, ElapsedEventArgs e)
        {
            //DateTime hr = DateTime.Now;
            //if (hr.Hour == 8)
            //{
                OpenWithStartInfo();
            //}
        }

        public void fsw_Created(object sender, FileSystemEventArgs e)
        {
            try
            {
                Mail(e.FullPath);
            }
            catch (Exception ex)
            {
                if (EventLog.SourceExists("LufranMail"))
                {
                    EventLog.CreateEventSource("LufranMail", "Application");
                    evLufran.WriteEntry(ex.Message, EventLogEntryType.Warning, 234);
                }                
            }               
        }



        protected override void OnStart(string[] args)
        {
            // Creacion del Monitoreo            
            fsw.Path = @"E:\share\";
            fsw.Filter = "*.xls";
            fsw.IncludeSubdirectories = false;
            fsw.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.CreationTime;            
            fsw.EnableRaisingEvents = true;
            fsw.Created += fsw_Created;

            // Timer para Ejecutar el OpenWithStarInfo            
            tm.Interval = 1000 * 50;
            tm.Enabled = true;
            tm.Elapsed += tm_Elapsed;

            //evLufran.Source = "LufranMail";
            //evLufran.Log = "Application";
            //evLufran.EnableRaisingEvents = true;

        }

        protected override void OnStop()
        {
            fsw.EnableRaisingEvents = false; 
        }

        void Mail(string eAdjun)
        {
            MailMessage objMail;
            objMail = new MailMessage();
            objMail.From = new MailAddress("", "Notificaciones Lufran", System.Text.Encoding.UTF8); //Remitente
            objMail.To.Add(""); //Email a enviar 
            objMail.CC.Add(""); //Email a enviar copia
            objMail.Bcc.Add(""); //Email a enviar oculto
            objMail.Subject = "Clientes con Cotizaciones a 4 semenas (Mercancia por llegar)";
            objMail.SubjectEncoding = System.Text.Encoding.UTF8;
            objMail.Body = "Verifique por favor la informacion del archivo excel y remitala a los clientes que correspondan";
            objMail.BodyEncoding = System.Text.Encoding.UTF8;
            objMail.IsBodyHtml = false; //Formato Html del email
            objMail.Attachments.Add(new Attachment(eAdjun));
            SmtpClient SmtpMail = new SmtpClient();
            SmtpMail.Credentials = new System.Net.NetworkCredential("", "");
            SmtpMail.Port = 587; //asignamos el numero de puerto
            SmtpMail.Host = "smtp.gmail.com"; //el nombre del servidor de correo
            SmtpMail.EnableSsl = true;
            /*Captura de Errores*/
            try
            {
                SmtpMail.Send(objMail);
                SmtpMail.Dispose();
                objMail.Dispose();
                try
                {
                    File.Delete(eAdjun);
                }
                catch (Exception ex)
                {
                    if (EventLog.SourceExists("LufranMail"))
                    {
                        EventLog.CreateEventSource("LufranMail", "Application");
                        evLufran.WriteEntry("Archivo no se puede eliminar: " + ex.Message);
                    }

                }                                
            }
            catch (Exception ex)
            {
                if (!EventLog.SourceExists("LufranMail"))
                {
                    EventLog.CreateEventSource("LufranMail", "Application");
                    evLufran.WriteEntry(ex.Message);
                }                
            }
        }

        public void OpenWithStartInfo()
        {
            try
            {
                ProcessStartInfo startInfo = new ProcessStartInfo(@"E:\Share\xComprasLF.fxp");
                startInfo.WindowStyle = ProcessWindowStyle.Minimized;
                Process.Start(startInfo);
            }
            catch (Exception ex)
            {
                if (!EventLog.SourceExists("LufranMail"))
                {
                    EventLog.CreateEventSource("LufranMail", "Application");
                    evLufran.WriteEntry(ex.Message);
                }                               
            }            
        }
    }
}
4

1 に答える 1

0

SMTP コードにはいくつかの問題があります。1 つ目は送信者を指定していないこと、2 つ目は受信者を指定していないこと、そして最後に使用する電子メール サーバーに資格情報を提供していないことです。これを修正すると、動作するはずです。

于 2013-05-24T19:40:42.383 に答える