2015-10-15 198 views
-2

在我的应用程序中,我使用SmtpClient发送电子邮件(仅限于gmail账户)。一切都很好,很完美。取消使用smtp发送邮件SMTP

我在Gmail中看到一个选项,允许我们取消/撤消发送邮件。如下图所示。在这里我的问题是关于这个问题,我如何根据一些条件取消/撤销从我的程序发送的邮件。

enter image description here

下面是使用用于发送邮件的代码我':

MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 
    SmtpClient client = new SmtpClient(); 
    client.Port = 587; 
    client.DeliveryMethod = SmtpDeliveryMethod.Network; 
    client.UseDefaultCredentials = false; 
    client.Credentials = new System.Net.NetworkCredential("[email protected]", "xxxxxxx"); 
    client.Host = "smtp.gmail.com"; 
    client.EnableSsl = true; 
    mail.Subject = "this is a test email."; 
    mail.Body = "this is my test email body"; 
    client.Send(mail); 
    // this is what i want to do 
    if(someCondition=true) 
    {//undo the send operation} 
+1

这不是SMTP的功能。只需让您的程序安排在30秒内发送电子邮件,而不是立即发送。 – spender

回答

1

从我有限的知识,则无法取消已发送到邮件服务器邮件。你可以完成由撤消功能:您的服务器

  • A(延迟作业计划)上

    • 保存在一个表中的邮件的详细信息(可以称之为pending_emails)或(重复作业每X分钟)查询条目pending_emails早些时候提出5分钟,并将它们发送到SMTP服务器(如你现在正在做的)
    • 作业发送电子邮件,并删除从pending_emails
    • 撤消按钮删除从pending_emails的电子邮件的邮件
  • -1

    Google只会延迟发送电子邮件30秒,最简单的方法是在发送之前通过smtp或使用过滤器发送邮件之前,使用30秒的异步计时器。