0

我们正在使用下载 Gmail AC 附件的代码

openpop3 命名空间。在此代码中,我们正在检查附件大小(如果有附件)

大小大于指定值(在配置文件中设置的值以 kb 为单位)。那么它必须

向发件人发送电子邮件....它在 Windows 应用程序中运行良好,但每当我实现代码时

在 Window 服务中出现问题。它从这行代码中退出函数

OpenPop.Mime.Message m = popClient.GetMessage(i);

Framework:3.5 VS:2008 Language# Open POP namespace V2.0.4.369

This is my code

 OpenPop.Mime.Message m = popClient.GetMessage(i);


private void ReceiveMails()
    {

            Utility.Log = true;
            if (popClient.Connected)
            {
                popClient.Disconnect();
            }
            popClient.Connect(POPServer, port, ssl);
            popClient.Authenticate(username, password);
            int Count = popClient.GetMessageCount();
            writeToLogFile("Total Mail count is:" + Count.ToString());
            if (Count > 0)
            {
                for (int i = 1; i <= Count; i++)
                {
                    flag = false;

                    OpenPop.Mime.Message m = popClient.GetMessage(i);
                    Sub = m.Headers.Subject;
                   int size = popClient.GetMessageSize(i);
                    int mailsize = int.Parse(ConfigurationSettings.AppSettings

["emailSize"]) * 1024;



                    if (size < mailsize)
                    {
                    //we are checking the sub of Email
                    for (int j = 1; j < 30; j++)
                    {

                        strFranchisekey = ConfigurationSettings.AppSettings

["Franchise" + j];
                        if (strFranchisekey != "")
                        {
                            int inex = strFranchisekey.IndexOf("=");
                            strFranchiseshortvalue = strFranchisekey.Substring

(0, inex);

                            if (Sub.Contains(strFranchiseshortvalue))
                            {
                                flag = true;

                                foreach (OpenPop.Mime.MessagePart attachment in 

m.FindAllAttachments())
                                {
                                    writeToLogFile(attachment.FileName);
                                    file = attachment.FileName;
                                    index = strFranchisekey.IndexOf("=");
                                    string StrCity = strFranchisekey.Substring

(index + 1);
                                    strFolderPath = 

(ConfigurationSettings.AppSettings["FolderPath" +StrCity]);
                                    StrSubFolderPath = 

(ConfigurationSettings.AppSettings["SubPath" + StrCity]);
                                    if (Directory.Exists(strFolderPath))
                                    //we are checking folder exists or not ?
                                    {
                                        File.WriteAllBytes(strFolderPath + "\\" 

+ file, attachment.Body);
                                    }
                                    //
                                    else if (Directory.Exists

(StrSubFolderPath))
                                    {
                                        File.WriteAllBytes(StrSubFolderPath + 

"\\" + file, attachment.Body);
                                    }
                                    else
                                    {
                                        //we can give here invalid path.
                                        File.WriteAllBytes

(ConfigurationSettings.AppSettings["InvalidPath"] + "\\" + file, attachment.Body);
                                        sendEmail(i);

                                    }
                                }
                                break;
                            }

                        }
                    }
                    if (flag != true)
                    {
                        writeToLogFile("matching franchise name is not found");

                        foreach (OpenPop.Mime.MessagePart attachment in 

m.FindAllAttachments())
                        {
                            File.WriteAllBytes

(ConfigurationSettings.AppSettings["InvalidPath"] + "\\" + file, attachment.Body);

                        }
                        sendEmail(i);
                    }

                }
             }
    else
  {
     writeToLogFile("Please reduce the  email size");
   }

            }
            else
            {
                writeToLogFile("No New Attachment");
            }



        }
4

1 回答 1

0

感谢@Antonio Bakula 我在我的 Windows 服务应用程序中编写了 try catch 块并记录它。然后我理解了我的错误并给出了异常,无法读取另一个实例已经在读取的消息。这是因为代码是基于计时器的,并且

我每 1 分钟触发一次事件。现在,我添加了代码以在开始电子邮件处理时立即停止计时器,并在完成电子邮件处理代码后启动计时器。

于 2013-04-15T08:24:23.647 回答