Длина не может быть меньше нуля Имя параметра: длина - PullRequest
1 голос
/ 30 мая 2019

Я искал привет и низ, чтобы попытаться найти решение этой ошибки. В режиме отладки и выпуска VS2015 я не получаю никаких ошибок, и код генерирует желаемый результат. После того, как программа скомпилирована и установлена, когда нажата кнопка электронной почты для генерации кода, приложение работает так, как если бы оно работало, а затем примерно через 20 секунд выдает ошибку «Длина не может быть меньше нуля Имя параметра: длина», но приложение продолжается, но не завершает соответствующий код.

Я отключил и попытался использовать одну строку кода, которая ссылается на длину, которая не имеет значения.

Я в пределе того, что может быть причиной этого, поэтому я ищу помощи, чтобы найти иголку в стоге сена.

Ниже приведен код:

try
        {
            // Create the Outlook application.
            Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
            // Create a new mail item.
            Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            // Set HTMLBody. 
            //add the body of the email
            oMsg.HTMLBody = DictMailParam["Body"].ToString();
            //Add an attachment.
            String sDisplayName = DictMailParam["AttachmentName"].ToString();
            int iPosition = (int)oMsg.Body.Length + 1;
            int iAttachType = (int)Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue;
            //now attached the file
            //Microsoft.Office.Interop.Outlook.Attachment oAttach = oMsg.Attachments.Add
            //                             (@"C:\\fileName.jpg", iAttachType, iPosition, sDisplayName);

            foreach (string strFile in DictMailParam["Attachments"].ToString().Split(',').ToList())
            {
                Microsoft.Office.Interop.Outlook.Attachment oAttach = oMsg.Attachments.Add
                        (strFile, iAttachType, iPosition, sDisplayName);
            }
            //Subject line
            oMsg.Subject = DictMailParam["Subject"].ToString();
            // Add a recipient.
            Microsoft.Office.Interop.Outlook.Recipients oRecips = (Microsoft.Office.Interop.Outlook.Recipients)oMsg.Recipients;
            Microsoft.Office.Interop.Outlook.Recipient oRecip = null; 
            // Change the recipient in the next line if necessary.
            foreach (var MailId in DictMailParam["ToAddress"].ToString().Split(';').ToArray())
            {
                if (!string.IsNullOrEmpty(MailId))
                {
                    oRecip = (Microsoft.Office.Interop.Outlook.Recipient)oRecips.Add(MailId);//DictMailParam["ToAddress"].ToString()
                    oRecip.Resolve();
                    // Send.
                }

            }

            oMsg.Send();
            MessageBox.Show("Purchase Order has been sent to your email." + "\n" + "Please check your mail.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            // Clean up.
            oRecip = null;
            oRecips = null;
            oMsg = null;
            oApp = null;
        }//end of try block
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }//end of catch
    }//end of Email Method

1 Ответ

0 голосов
/ 30 мая 2019

Измените код перехвата на MessageBox.Show (ex.ToString () ...) вместо ex.Message.Таким образом, при возникновении ошибки вы получите сообщение, указывающее, какая строка выдает исключение.Тогда возвращайся сюда и скажи, какая это была линияРешить вашу проблему будет намного легче, если мы знаем, где она находится.

...