ASP.net mvc5每7天发送一次电子邮件?

时间:2015-06-26 07:14:19

标签: c# asp.net asp.net-mvc email asp.net-mvc-5

我正在处理我的一个小项目,而且我不确定我在基于网络的解决方案上是否可以尝试做什么。

现在它的设置就像这样,用户发布了一些内容以及他在数据库中发布的日期。我想要做的是如果用户在7天内没有发布另一件事,我想给他们发一封电子邮件说他们已经晚了"或类似的东西。

我知道如何在asp.net中发送电子邮件,因为我的用户可以请求新密码/他们需要验证他们的电子邮件。我只是不知道如何设置它(如果可能的话)

2 个答案:

答案 0 :(得分:1)

您需要一个单独的流程来检查并发送电子邮件。您将无法在Web应用程序本身中执行此操作,但某种服务可以执行此操作。

此服务只需要定期检查数据库中的用户及其发布的最后日期。如果超过7天,请发送该电子邮件。

请记住记录电子邮件已发送,并在确定要发送的电子邮件时进行检查,否则每次服务检查数据库时都会收到一封电子邮件,这可能会让用户感到沮丧!

答案 1 :(得分:0)

在asp中发送电子邮件很简单。它是我之前做的代码,检查你是否也要发送文件:

为了处理时间,你必须使用 timeSpan dateTime

它来自stackoverflow中的示例: 假设StartDate和EndDate的类型为DateTime:

(EndDate - StartDate).TotalDays

你必须检查这个值是否大于7

所以发送邮件的代码如下所示,但你必须为自己的优化:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;

public partial class SendMail : System.Web.UI.Page
{
MailMessage mail = new MailMessage();
protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnSend_Click(object sender, EventArgs e)
{

try
{
lblmessage.Text ="";
mail.To.Add(txtto.Text.Trim());
mail.From = new MailAddress(txtfrom.Text.Trim());
mail.Subject = txtsubject.Text.Trim();
mail.Body = txtbody.Text.Trim();
mail.IsBodyHtml = true;
if (uploader.HasFile)
{
string filename = uploader.PostedFile.FileName;
string filepath=Server.MapPath("uploads//"+filename);
uploader.SaveAs(filepath);
Attachment attach = new Attachment(filepath);
attach.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
mail.Attachments.Add(attach);
}

SmtpClient client = new SmtpClient();

client.Host = "mail.youdomain.com";
client.Credentials = new System.Net.NetworkCredential("email username=info@yourdomain.com", "email passowrd");
client.Send(mail);
lblmessage.Text = "sent with success";
}
catch (Exception ex)
{
lblmessage.Text = ex.Message;
}
}

}