如何发送未发送的邮件

时间:2011-10-17 03:32:45

标签: asp.net smtp smtpclient mail-server

在vs2010上工作,asp.net C#。最近我在smtp服务器上工作。使用我需要发送邮件的smtp服务器,我已经成功完成了这项工作。要发送邮件,请使用以下语法

public string PostEmail(string mailSubject, string mailBody)
{

    string deliveryStatusCode = "Ok";
    if (!string.IsNullOrEmpty(mailSubject) && !string.IsNullOrEmpty(gConfig.EmailTo))
    {
        MailMessage msg = new MailMessage();
        msg.To.Add(gConfig.EmailTo);
        msg.From = new MailAddress(gConfig.EmailTo);
        msg.Subject = mailSubject;
        msg.Body = mailBody;
        msg.IsBodyHtml = true;

        SmtpClient smtp = new SmtpClient(gConfig.SmtpHost, gConfig.SmtpPort);
        smtp.Credentials = new System.Net.NetworkCredential(gConfig.SmtpCredentials, gConfig.SmtpPassword);
        smtp.EnableSsl = true;
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;


        try
        {
            smtp.Send(msg);
        }
        catch (SmtpException smptpEx)
        {
            deliveryStatusCode = smptpEx.Message;
        }

    }
    else
    {
        deliveryStatusCode = "Invalid or null value entry.";
    }

    return deliveryStatusCode;
}

。现在我遇到一个问题,由于某种原因,某些邮件无法发送,那些未发送的邮件需要发送,如何发送那些未发送的邮件,smtp中是否有任何机制来执行此工作或者有一些方法可以解决这个问题。谢谢。如果有任何查询请问。

2 个答案:

答案 0 :(得分:0)

您可以使用取件目录,如果smtp服务器关闭,则不发送邮件。当它联机时,它将读取目录中的文件并开始发送电子邮件。

答案 1 :(得分:0)

您的.NET代码只接收消息,生成并发送电子邮件,然后将其发送到SMTP服务器。由SMTP服务器重新发送任何未发送的消息。

您可以执行@peer所说的操作,而不是发送SMTP邮件,只需将生成的文件放在SMTP提取目录中,但这需要您的.NET代码才能访问SMTP提取目录。

另一个选项可能是存储电子邮件对象(在内存中,或在磁盘上序列化),如果send引发错误,请稍后重试。

但最终,你真的需要找出电子邮件首先没有通过的原因。这通常是一个配置问题,可以通过一些调查来缓解。查看网络连接,SMTP服务器正常运行时间,最重要的是..身份验证。

正如我在评论中所说,生成的电子邮件在最终登陆最终用户收件箱之前会产生很多跳。如果没有关于 错误的更多细节,我们只能投掷飞镖并希望其中一个落地。

祝你好运 大通