سلام
من دز حال طراحی سایتی هستم که یکی از امکاماتش ارسال ایمیل در ساعت های مختلف به طور خود کار هستش. از اموزش استفاده از quartz همین سایت استفاده کردم ولی یه جا به خطا بر می خورم
using Quartz; using System; using System.Net; using System.Net.Mail; namespace sch { public class EmailJob { public void Execute(IJobExecutionContext context) { using (var message = new MailMessage("mohsen_metn@yahoo.com", "mohsen_metn@yahoo.com")) { message.Subject = "Test"; message.Body = "Test at " + DateTime.Now; using (SmtpClient client = new SmtpClient { EnableSsl = true, Host = "smtp.gmail.com", Port = 587, Credentials = new NetworkCredential("mohsen_metn@yahoo.com", "*****") }) { client.Send(message); } } } } }
ایم کلاسی هست که job رو تعریف می کنم
using Quartz; using Quartz.Impl; using System; namespace sch { public class JobScheduler { public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create<EmailJob>().Build(); ITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(24) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0)) ) .Build(); scheduler.ScheduleJob(job, trigger); } } }
این هم کلاسی که تریگر رو تعریف میکنه
اما از IJobDetail job = JobBuilder.Create<EmailJob>().Build(); خطای زیر رو می گیره
Error 1 The type 'sch.EmailJob' cannot be used as type parameter 'T' in the generic type or method 'Quartz.JobBuilder.Create<T>()'. There is no implicit reference conversion from 'sch.EmailJob' to 'Quartz.IJob'. D:\PROJECT\BIPC\Quartz\sch\sch\JobScheduler.cs 15 30 sch
مشکل از کجاست و راه حل چیه؟
این خطا می گوید EmailJob که در متد create تعریف کرده اید یک job به حساب نمی اید و اینترفیس IJob را پیاده سازی نکرده است.
خب من دقیقا از روی مقاله زمانبندی کار ها با استفاده از quartz همین سایت اینو پیاده سازی کردم
برای حل مشکل چه کنم؟
کلاس EmailJob باید از IJob ارث بری کند.
مشکل برطرف شد کلاس ایمیل باید به صورت زیر پیاده سازی بشه
using Quartz; using System; using System.Net; using System.Net.Mail; namespace sch { public class EmailJob { public void Execute(IJobExecutionContext context) { using (var message = new MailMessage("mohsen_metn@yahoo.com", "mohsen_metn@yahoo.com")) { message.Subject = "Test"; message.Body = "Test at " + DateTime.Now; using (SmtpClient client = new SmtpClient { EnableSsl = true, Host = "smtp.gmail.com", Port = 587, Credentials = new NetworkCredential("mohsen_metn@yahoo.com", "*****") }) { client.Send(message); } } } } }
ر
jobrunshell.cs not found
حالا یه مشکل جدید دارم برنامه به درستی اجرا میشه ولی ایمیلی ارسال نمیشه در تریس خط به خط پس از اجرای دستور ارسال ایمیل خطای بالارو ردیافت میکنم
کسی نمی تونه کمک کنه؟
شاید کتابخانه هایی که نصب کردید ناقص است
مجدد نصب کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)