Я искал привет и низ, чтобы попытаться найти решение этой ошибки. В режиме отладки и выпуска 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