[英]c# send uploaded file through email daily using asp.net web application
我只想知道,如果该 Excel 文件有任何新数据可用,如何制作一个 Web 应用程序,该应用程序从用户那里输入 Excel 文件并每天发送一封电子邮件。
我应该使用网络服务(在本地计算机上安装该服务)吗? 是的,然后如何添加上传用户界面。 或者我应该只使用一个 web 应用程序,我应该在那个应用程序中添加 web-service 吗?
请让位于摆脱这个问题。
谢谢。
取决于您正在构建的应用程序的性质:
如果您希望用户通过 Internet 访问它,请将其创建为 ASP.NET 应用程序 (UI) 和服务器上的 Windows 服务/Windows 任务计划程序,以发送预定的电子邮件。
如果您希望用户从他/她的本地计算机/服务器运行应用程序,请在本地计算机上创建一个 Windows 窗体应用程序 (UI) 和一个 Windows 服务/Windows 任务计划程序来发送预定的电子邮件。
无需安装到用户计算机。 当然,您需要一个简单的 Web 应用程序和一个 Web 服务器。 有很多关于 Web 应用程序入门的教程,这里有一些链接:
ASP.NET WebForms - 过时但功能强大的 Web 应用程序范例。 但是,我确实推荐下一个选项,特别是如果您以前没有任何桌面应用程序经验。
ASP.NET MVC - 这是构建 Web 应用程序的现代方式。
一旦你决定使用什么技术,你就需要所谓的SMTP服务器; 通常 ISP 会为您提供一个,您需要在 web.config 中添加一个配置,例如:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="*SMTP server IP address*" port="25" />
</smtp>
</mailSettings>
</system.net>
您可以查看此SO 帖子,了解有关如何在 ASP.NET MVC 中完成此操作的详细信息。
如果你真的想把它作为 Asp.Net WebApp 的后台工作,你应该看看:
创建作业以发送电子邮件
public class SendMailJob : IJob
{
public void Execute(IJobExecutionContext context)
{
...Do your stuff;
}
}
然后将您的工作配置为每天执行
// define the job and tie it to our SendMailJob class
IJobDetail job = JobBuilder.Create<SendMailJob>()
.WithIdentity("job1", "group1")
.Build();
// Trigger the job to run now, and then repeat every 24 hours
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInHours(24)
.RepeatForever())
.Build();
RecurringJob.AddOrUpdate(
() => YourSendMailMethod("email@email.com"),
Cron.Daily);
IHostedService (仅在 Asp.Net Core 中)
public class SendMailHostedService : IHostedService, IDisposable
{
private readonly ILogger<SendMailHostedService> _logger;
private Timer _timer;
public SendMailHostedService(ILogger<SendMailHostedService> logger)
{
_logger = logger;
}
public Task StartAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("Hosted Service running.");
_timer = new Timer(DoWork, null, TimeSpan.Zero,
TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
private void DoWork(object state)
{
//...Your stuff here
_logger.LogInformation(
"Timed Hosted Service is working. Count: {Count}", executionCount);
}
public Task StopAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("Timed Hosted Service is stopping.");
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
_timer?.Dispose();
}
}
在您的 startup.cs 类中。 在配置方法中添加它。
services.AddHostedService<SendMailHostedService>();
如果不需要将其作为 WebApp 上的后台作业托管,那么您可以创建一个每天在您需要的时间运行的 Windows 服务。
看到这个问题: Windows 服务调度每天早上 6:00 运行一次
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.