[英]ASP.net mvc5 sending email every 7 day?
我正在做我的一个小项目,我不确定我正在尝试做的事情是否可以在基于 Web 的解决方案上实现。
现在它的设置是这样的,用户发布了一些内容以及他在数据库中发布的日期。 我想要做的是,如果用户在 7 天内没有发布另一件事,我想向他们发送一封电子邮件,说他们“迟到”或类似的事情。
我知道如何在 asp.net 中发送电子邮件,因为我的用户可以请求新密码/他们需要验证他们的电子邮件。 我只是不知道如何像我上面想要的那样设置它(如果有可能的话)
您需要一个单独的进程来检查并发送电子邮件。 您将无法在 Web 应用程序本身中执行此操作,但某种服务可以执行此操作。
此服务只需要定期检查您的数据库中的用户及其最后发布日期。 如果超过 7 天,请发送该电子邮件。
记住要记录邮件已发送,并在确定要发送的邮件时进行检查,否则每次服务检查数据库时都会收到一封电子邮件,这可能会让用户感到有些沮丧!
在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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.