簡體   English   中英

c#使用asp.net web應用程序每天通過電子郵件發送上傳的文件

[英]c# send uploaded file through email daily using asp.net web application

我只想知道,如果該 Excel 文件有任何新數據可用,如何制作一個 Web 應用程序,該應用程序從用戶那里輸入 Excel 文件並每天發送一封電子郵件。

我應該使用網絡服務(在本地計算機上安裝該服務)嗎? 是的,然后如何添加上傳用戶界面。 或者我應該只使用一個 web 應用程序,我應該在那個應用程序中添加 web-service 嗎?

請讓位於擺脫這個問題。

謝謝。

取決於您正在構建的應用程序的性質:

  1. 如果您希望用戶通過 Internet 訪問它,請將其創建為 ASP.NET 應用程序 (UI) 和服務器上的 Windows 服務/Windows 任務計划程序,以發送預定的電子郵件。

  2. 如果您希望用戶從他/她的本地計算機/服務器運行應用程序,請在本地計算機上創建一個 Windows 窗體應用程序 (UI) 和一個 Windows 服務/Windows 任務計划程序來發送預定的電子郵件。

無需安裝到用戶計算機。 當然,您需要一個簡單的 Web 應用程序和一個 Web 服務器。 有很多關於 Web 應用程序入門的教程,這里有一些鏈接:

  1. ASP.NET WebForms - 過時但功能強大的 Web 應用程序范例。 但是,我確實推薦下一個選項,特別是如果您以前沒有任何桌面應用程序經驗。

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM