This works fine when I run the application locally- basically on IIS Express (formerly known as Development Server). But if I publish to IIS, it does not work. Tried two different IIS on two different machine. I don't know how to get any log information when it runs on IIS. All about checking if there is a new record every minute to send email.
Global.asax:
protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 60000;
timer.AutoReset = true;
timer.Elapsed += new ElapsedEventHandler(NewCandidates);
timer.Enabled = true;
}
public void NewCandidates(object source, System.Timers.ElapsedEventArgs e)
{
SendEmail.MailSender mail = new MailSender();
mail.EmailSender();
}
EmailSender method:
public void EmailSender()
{
Entities entity = new Entities();
DateTime moment = DateTime.Now.AddMinutes(-1);
var ilan = from ilanRow in entity.IsIlan
where (ilanRow.Date >= moment) && (ilanRow.Yayinla==true)
from iOnay in entity.IlanOnay
where iOnay.IlanId == ilanRow.IsIlanId
from sirket in entity.KurumFirma
where sirket.KurumFirmaId==ilanRow.KurumFirmaId
select new { ilanRow, iOnay, sirket };
List<IlanList> liste = new List<IlanList>();
foreach (var itemilan in ilan)
{
liste.Add(new IlanList
{
KurumId = itemilan.ilanRow.KurumFirmaId,
IlanId = itemilan.ilanRow.IsIlanId,
SirketAdi = itemilan.sirket.Adi,
IlanAdi = itemilan.ilanRow.Adi,
Il = itemilan.ilanRow.Il,
IsAlan = itemilan.ilanRow.IsAlan,
Date = itemilan.ilanRow.Date,
Sonuc = itemilan.iOnay.sonuc
});
}
List<IlanOnayList> listeOnay = new List<IlanOnayList>();
MailMessage message = new MailMessage();
message.From = new MailAddress("[email protected]");
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "New Ones";
string body = "<table style=\"border:1px solid gray; padding:5px;\"><th>Şirket Adı</th><th>İlan Adı</th><th>İl</th><th>İş Alanı</th><th>Tarih</th>";
foreach (var item in liste)
{
body = body +
"<tr><td style=\"border:1px solid gray; padding:5px;\">" + item.SirketAdi +
"<td style=\"border:1px solid gray; padding:5px;\">" + item.IlanAdi +
"</td><td style=\"border:1px solid gray; padding:5px;\">" + item.Il +
"</td><td style=\"border:1px solid gray; padding:5px;\">" + item.IsAlan +
"</td><td style=\"border:1px solid gray; padding:5px;\">" + item.Tarih +
"</td></tr>";
}
body = body + "</table><br />";
message.Body = body;
message.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
foreach (var item in liste)
{
if (liste.Count > 0 && item.Sonuc != "var")
{
client.Send(message);
var onay = from i in entity.IlanOnay where i.IlanId == item.IlanId select i;
foreach (var itemonay in onay)
{
itemonay.sonuc = "var";
entity.SaveChanges();
}
}
}
}
Web.Config:
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="auth.myhosting.com" port="587" userName="[email protected]" password="123456" defaultCredentials="false" />
</smtp>
</mailSettings>
Apparently, you need to browse the site once, when it is published to IIS. It's working!