[英]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.