如何立即在 C# 中发送邮件或至少在后台执行它[关闭]

Posted

技术标签:

【中文标题】如何立即在 C# 中发送邮件或至少在后台执行它[关闭]【英文标题】:How to send mail in c# instantly or at least perform it in background [closed] 【发布时间】:2014-08-12 14:03:23 【问题描述】:

我正在使用 smtp 客户端和 c# 的邮件消息类来发送邮件。邮件将一次发送给一个或最多两个用户。但是,邮件发送过程很慢。发送邮件大约需要 5-8 秒。直到此时,页面仍处于空闲位置。 asp.net c#中有没有办法立即发送邮件或至少重定向到另一个页面并在后台执行邮件发送操作,这样用户就不会感到延迟。有什么建议!!我对 smtpclient.sendmailAsync 进行了研究,但在使用此属性时,邮件未发送..提前致谢

【问题讨论】:

您可以随时启动线程或异步任务来发送电子邮件,这样页面就不必等待发送完毕后才返回 因为我是这个概念的新手,我不知道它是如何完成的..你能提供一些我可以使用它的链接吗.. 谢谢 ken.. 我得到了我想要的.. 【参考方案1】:
        Task sendEmail = new Task(() =>
        
            //create the mail message
            MailMessage mail = new MailMessage();

            //set the addresses
            mail.From = new MailAddress("me@mycompany.com");
            mail.To.Add("you@yourcompany.com");

            //set the content
            mail.Subject = "This is an email";
            mail.Body = "this is a sample body";

            //send the message
            SmtpClient smtp = new SmtpClient();
            smtp.Port = 465;
            smtp.UseDefaultCredentials = true;

            smtp.Host = "smtp.gmail.com";

            smtp.EnableSsl = true;
            smtp.Credentials = new NetworkCredential("youGmailAddress@gmail.com", "YourPassword");  

            smtp.Send(mail);
        );

        sendEmail.Start();

【讨论】:

以上是关于如何立即在 C# 中发送邮件或至少在后台执行它[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

执行一些需要 5 秒的事情(如电子邮件发送)但立即返回并回复?

C# 如何从 Outlook 的共享邮箱发送邮件并将其保存在已发送文件夹中

我的表格在发送后立即对齐(时事通讯的 HTML 电子邮件)

C#发送邮件源码

消息队列或调度程序

如何在后台运行的Controller中调用函数