2011-10-17 347 views
-1

工作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任何机制来执行此工作或出现是解决这个问题的一些方法。提前感谢。如果有任何查询请求。

+0

我不知道为什么人们打上负,我认为上面的问题是不是像一个孩子的糖果,PLZ任何一个可以告诉我。为什么这是一个坏的问题吗? – shamim

+0

你说他们不能发送,但那不清楚。你的代码是否引发错误?信息是否离开你的系统,但永远不会到达?在电子邮件旅程中有很多跳跃,将它缩小到一小段示例代码是不可能的。 –

+0

这个问题很不明确。正如Chase所说,“不能发送”,这是什么意思?你有例外吗?你是否收到回复(在这种情况下,他们*发送*,他们只是没有收到正确的收件人) –

回答

0

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

0

您的.NET代码只需要一条消息,生成并发送电子邮件并将其发送到SMTP服务器。 SMTP服务器重新发送任何未发送的消息。

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

另一种选择可能是将电子邮件对象(内存或磁盘上的序列号)存储起来,如果send引发错误,则稍后重试。

然而,最终,你真的需要找出为什么电子邮件没有通过首先。这通常是一个配置问题,可以通过一些调查来缓解。研究网络连接,SMTP服务器正常运行时间,最重要的是..认证。

正如我在评论中所说的那样,生成的电子邮件在最终登陆最终用户收件箱之前进行了很多次跳跃。没有更多的细节,以至于错误,我们只能扔飞镖,并希望其中一个着陆。

好运
大通

相关问题