Skip to main content
 首页 » 编程设计

c#之发送多封具有交易行为的电子邮件(如果失败,则不会发送任何电子邮件)

2024年01月31日35myhome

抱歉,如果我找不到关于我的问题的现有帖子。

我想做的事情如下:

我只是想发送几封电子邮件 (2-3) 给不同的人,更重要的是发送不同的内容。这些电子邮件是官方的、重要的并且也记录在系统中。长话短说,当由于某种原因其中一个无法阻止其他人的发送时,我需要。我需要全部发送或一个都不发送。

到目前为止我做了什么

这不是我工作的系统第一次必须发送自动电子邮件。该应用程序是一个 ASP MVC 网站。所以前段时间,我安装了 MvcMailer(MvcMailer) 并按照解释的方式使用它。它工作得很好,所以我喜欢预览电子邮件的想法(因为你可以给它一个发送 View )。

因此,鉴于我的新问题,我仔细阅读了 MvcMailer 文档,但没有找到任何关于以类似事务的方式发送多封电子邮件的信息。想不出一种方法来强制他们以这种方式行事。在我发送电子邮件的测试中,即使它是一封带有几个抄送的电子邮件,所有工作邮件都会发送,只有其中一封失败(错误的电子邮件名称,关闭的端口......等等)。

我希望有人能建议我实现这样的目标的方法。我希望我的解释足够,如果不够,请告诉我,我会为您提供所需的所有详细信息。

如果使用 MvcMailer 无法做到这一点,那么使用其他工具是否可行?

到目前为止我的实现情况:(请记住,我仍处于测试阶段)

public class MailerController : Controller 
{ 
   private MailerRepository mailerRep; 
 
   public MailerController() 
   { 
       this.mailerRep = new MailerRepository(); 
   } 
 
   public void TestTransmittalEmail() 
   { 
       var model = this.mailerRep.GetTransmittalModel(1234); //I've stucked a specific clientId 
       var mailer = new TransmittalsMailer(); 
       mailer.TransmittalEmail(model).Send(); 
   } 
} 
 
public class TransmittalsMailer : MailerBase 
{ 
    public TransmittalsMailer() 
    { 
 
    } 
 
    public MvcMailMessage TransmittalEmail(TransmittalManifestModel model) 
    { 
        var mailMessage = new MvcMailMessage() { Subject = "Transmittals - TESTING EMAIL" }; 
        //embedding a few images in the email 
        var resources = new Dictionary<string, string>(); 
        resources["logo"] = PDFResourcePaths.VripackLogo; 
        resources["companyInfo"] = PDFResourcePaths.CompanyInfoBlock; 
 
        mailMessage.To.Add("test1@email.com"); 
 
        mailMessage.Attachments.Add(new Attachment(@"D:\ASD\TransmittalFolders\1\Archives\150812.1433.MMA.rar")); 
 
        ViewData["model"] = model; 
        this.PopulateBody(mailMessage, "TransmittalEmailView", resources); 
 
        return mailMessage; 
    } 
} 

请您参考如下方法:

这其实是一个比较难解决的问题。这是因为当您发送电子邮件时,只要可以找到 SMTP 服务器,它就会工作(不会抛出异常)。

因此,您基本上必须等待任意时间,并检查您发送邮件的收件箱是否存在投递失败。如果交付失败,您将停止发送。

长话短说,您可能不应该这样做。您应该简单地发送所有这三个并以其他方式(可能是另一封电子邮件)通知自己失败以及哪封电子邮件失败。