public ArrayList GetMail()
        {
            MailMessage message;

            Outlook.MailItem msgInbox;
            ArrayList        arrayMessages = null;

            Outlook.ApplicationClass appOutlook = null;

            try
            {
                arrayMessages = new ArrayList();

                //connect to the CDO library
                appOutlook = new Outlook.ApplicationClass();
                Outlook.NameSpace appNamespace = appOutlook.GetNamespace("MAPI");
                appNamespace.Logon("jkanalakis", "jkanalakis", false, false);

                //navigate to the inbox folder
                Outlook.Explorer exp = appOutlook.Explorers.Item(1);

                for (int intIdx = 1; intIdx <= exp.CurrentFolder.Items.Count; intIdx++)
                {
                    //retrieve the next message from the inbox
                    msgInbox = (Outlook.MailItem)exp.CurrentFolder.Items.Item(intIdx);

                    //convert data into MailMessage
                    message         = new MailMessage();
                    message.Subject = msgInbox.Subject;
                    message.Body    = msgInbox.Body;

                    //add MailMessage to the ArrayList
                    arrayMessages.Add(message);
                }
            }
            catch (Exception exception)
            {
                LogEvent(exception.Message);
            }
            finally
            {
                Marshal.ReleaseComObject(appOutlook);
            }

            return(arrayMessages);
        }
 private void ThisAddIn_Startup(object sender, System.EventArgs e)
 {
     currentExplorer = this.Application.ActiveExplorer();
     currentExplorer.SelectionChange += ExplorerSelectionChange;
 }
Esempio n. 3
0
 private void ThisAddIn_Startup(object sender, System.EventArgs e)
 {
     currentExplorer = Application.ActiveExplorer();
     Application.ItemContextMenuDisplay += Application_ItemContextMenuDisplay;
     Application.ContextMenuClose       += Application_ContextMenuClose;
 }
Esempio n. 4
0
        public void ImportMail(Outlook.Explorers explorers, ConfigXML configXML)
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(OpenKMAddIn));

            int mailCount  = 0;
            int mailAttach = 0;

            for (int y = 1; y <= explorers.Count; y++)
            {
                Outlook.Explorer openWindow        = explorers.Item(y);
                String           token             = "";
                OKMAuth          authService       = new OKMAuth(configXML.getHost());
                OKMFolder        folderService     = new OKMFolder(configXML.getHost());
                OKMRepository    repositoryService = new OKMRepository(configXML.getHost());
                OKMMail          mailService       = new OKMMail(configXML.getHost());
                OKMDocument      documentService   = new OKMDocument(configXML.getHost());

                try
                {
                    if (configXML.getUser().Equals("") || configXML.getPassword().Equals("") ||
                        configXML.getHost().Equals(""))
                    {
                        throw new Exception(resources.GetString("error_configuration_empty"));
                    }

                    token = authService.login(configXML.getUser(), configXML.getPassword());

                    for (int i = 1; i <= openWindow.Selection.Count; i++)
                    {
                        Object selObject = openWindow.Selection.Item(i);
                        if (selObject is Outlook.MailItem)
                        {
                            mailCount++;
                            Outlook.MailItem mailItem     = (selObject as Outlook.MailItem);
                            DateTime         receivedTime = mailItem.ReceivedTime;
                            String           user         = configXML.getUser();
                            String           basePath     = "/okm:mail/" + user + "/";
                            String           year         = "" + receivedTime.Year;
                            String           month        = "" + receivedTime.Month;
                            String           day          = "" + receivedTime.Day;

                            // Only creating folders when it's needed
                            if (repositoryService.hasNode(token, basePath + year))
                            {
                                if (repositoryService.hasNode(token, basePath + year + "/" + month))
                                {
                                    if (!repositoryService.hasNode(token, basePath + year + "/" + month + "/" + day))
                                    {
                                        folder dayFolder = new folder();
                                        dayFolder.path = basePath + year + "/" + month + "/" + day;
                                        folderService.create(token, dayFolder);
                                    }
                                }
                                else
                                {
                                    folder monthFolder = new folder();
                                    folder dayFolder   = new folder();
                                    monthFolder.path = basePath + year + "/" + month;
                                    dayFolder.path   = basePath + year + "/" + month + "/" + day;
                                    folderService.create(token, monthFolder);
                                    folderService.create(token, dayFolder);
                                }
                            }
                            else
                            {
                                folder yearFolder  = new folder();
                                folder monthFolder = new folder();
                                folder dayFolder   = new folder();
                                yearFolder.path  = basePath + year;
                                monthFolder.path = basePath + year + "/" + month;
                                dayFolder.path   = basePath + year + "/" + month + "/" + day;
                                folderService.create(token, yearFolder);
                                folderService.create(token, monthFolder);
                                folderService.create(token, dayFolder);
                            }

                            // Adding mail values
                            mail newMail = new mail();
                            newMail.path    = basePath + year + "/" + month + "/" + day + "/" + mailItem.Subject;
                            newMail.subject = mailItem.Subject;

                            newMail.from = mailItem.GetType().InvokeMember("SenderEmailAddress", System.Reflection.BindingFlags.GetProperty, null, mailItem, null).ToString();
                            //newMail.from = mailItem.SenderEmailAddress; // SenderEmailAddress was introduced in outlook 2002
                            newMail.sentDate              = mailItem.SentOn;
                            newMail.sentDateSpecified     = true;
                            newMail.receivedDate          = mailItem.ReceivedTime;
                            newMail.receivedDateSpecified = true;

                            // Setting mail context and type

                            BodyFormat format = (BodyFormat)mailItem.GetType().InvokeMember("BodyFormat", System.Reflection.BindingFlags.GetProperty, null, mailItem, null);
                            if (format.Equals(BodyFormat.olFormatPlain))
                            {
                                newMail.mimeType = "text/plain";
                                newMail.content  = mailItem.Body;
                            }
                            else
                            {
                                newMail.mimeType = "text/html";
                                newMail.content  = mailItem.HTMLBody;
                            }

                            // Initialize count recipient address variables
                            int count          = 0;
                            int countTo        = 0;
                            int countCC        = 0;
                            int countBCC       = 0;
                            int actualCountTo  = 0;
                            int actualCountCC  = 0;
                            int actualCountBCC = 0;

                            // Count each mail addresss type to / cc / bcc
                            for (int x = 1; x <= mailItem.Recipients.Count; x++)
                            {
                                Outlook.Recipient recipient = mailItem.Recipients.Item(x);
                                switch (recipient.Type)
                                {
                                case 1:
                                    countTo++;
                                    break;

                                case 2:
                                    countCC++;
                                    break;

                                case 3:
                                    countBCC++;
                                    break;

                                default:
                                    countTo++;
                                    break;
                                }
                                count++;
                            }

                            // Initialize variables
                            String[] mailTo  = new String[(countTo > 0) ? countTo : 1];
                            String[] mailCC  = new String[(countCC > 0) ? countCC : 1];
                            String[] mailBCC = new String[(countBCC > 0) ? countBCC : 1];

                            // All string[] must have at least one value, it¡s mandatory in webservices
                            if (countTo == 0)
                            {
                                mailTo[0] = "";
                            }
                            if (countCC == 0)
                            {
                                mailCC[0] = "";
                            }
                            if (countBCC == 0)
                            {
                                mailBCC[0] = "";
                            }

                            // Depending mail type each mail is assignede to it own type String[]
                            for (int x = 1; x <= mailItem.Recipients.Count; x++)
                            {
                                Outlook.Recipient recipient = mailItem.Recipients.Item(x);
                                switch (recipient.Type)
                                {
                                case 1:
                                    mailTo[actualCountTo] = recipient.Address;
                                    actualCountTo++;
                                    break;

                                case 2:
                                    mailCC[actualCountCC] = recipient.Address;
                                    actualCountCC++;
                                    break;

                                case 3:
                                    mailBCC[actualCountBCC] = recipient.Address;
                                    actualCountBCC++;
                                    break;

                                default:
                                    mailTo[actualCountTo] = recipient.Address;
                                    actualCountTo++;
                                    break;
                                }
                            }

                            // Assign mail recipients by type
                            newMail.bcc = mailBCC;
                            newMail.cc  = mailCC;
                            newMail.to  = mailTo;

                            // Creating mail
                            newMail = mailService.create(token, newMail);

                            // Setting attachments
                            if (mailItem.Attachments.Count > 0)
                            {
                                for (int x = 1; x <= mailItem.Attachments.Count; x++)
                                {
                                    Outlook.Attachment attachment = mailItem.Attachments.Item(x);

                                    mailAttach++;
                                    document doc = new document();
                                    doc.path = newMail.path + "/" + attachment.FileName;

                                    // save as tempfile for reading
                                    String filename = Environment.GetEnvironmentVariable("TEMP") + "\\" + DateTime.Now.ToString("yymmddHHMMss-") + attachment.FileName;
                                    // save the attachment
                                    attachment.SaveAsFile(filename);

                                    // Uploading document
                                    documentService.create(token, doc, ReadFile(filename));

                                    // Delete a file by using File class static method...
                                    if (File.Exists(filename))
                                    {
                                        // Use a try block to catch IOExceptions, to
                                        // handle the case of the file already being
                                        // opened by another process.
                                        try
                                        {
                                            File.Delete(filename);
                                        }
                                        catch (System.IO.IOException ex)
                                        {
                                            MessageBox.Show(String.Format(resources.GetString("error_deleting_tmp_file"), filename, ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        }
                                    }

                                    // Releasing com object
                                    Marshal.ReleaseComObject(attachment);
                                }
                            }

                            // Releasing com object
                            Marshal.ReleaseComObject(mailItem);
                        }

                        // Releasing com object
                        Marshal.ReleaseComObject(selObject);
                    }

                    if (!token.Equals(""))
                    {
                        authService.logout(token);  // Always we logout
                        token = "";                 // Reseting token value
                    }

                    if (mailCount > 0)
                    {
                        MessageBox.Show(String.Format(resources.GetString("email_successful_imported"), mailCount, mailAttach));
                    }
                    else
                    {
                        MessageBox.Show(resources.GetString("error_mail_not_selected"), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    if (!token.Equals(""))
                    {
                        authService.logout(token); // Always we logout
                    }
                }
            }
        }
Esempio n. 5
0
        protected void ProcessDeliverNow( )
        {
            try
            {
/*
 *              _tracer.Trace( "Start of send/receive" );
 *              _tracer.Trace( "Get raw pointer on Outlook.Explorer" );
 */
                object           oDocument = null;
                Outlook.Explorer explorer  = (Outlook.Explorer)_explorer.COM_Pointer;
                if (explorer != null)
                {
                    try
                    {
//                        _tracer.Trace( "Try to find CommandBars" );
                        oDocument = explorer.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty, null, explorer, null);
                    }
                    catch (COMException)
                    {
                        ShowErrorMessage();
                        return;
                    }
                }
                else
                {
                    _tracer.Trace("Cannot find explorer");
                    return;
                }

                if (oDocument == null)
                {
                    _tracer.Trace("Cannot find CommandBars");
                    ShowErrorMessage();
                    return;
                }

                _tracer.Trace("OutlookSession.Version = " + OutlookSession.Version);
                if (OutlookSession.Version >= 11)
                {
                    bool found = false;
                    try
                    {
                        object mainMenu = oDocument.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, oDocument, new object[] { "Menu Bar" });
                        if (mainMenu != null)
                        {
                            object toolsMenu = mainMenu.GetType().InvokeMember("Controls", BindingFlags.GetProperty, null, mainMenu, new object[] { 5 });
                            if (toolsMenu != null)
                            {
                                object sendMenu = toolsMenu.GetType().InvokeMember("Controls", BindingFlags.GetProperty, null, toolsMenu, new object[] { 1 });
                                if (sendMenu != null)
                                {
                                    object sendReceiveAll = sendMenu.GetType().InvokeMember("Controls", BindingFlags.GetProperty, null, sendMenu, new object[] { 1 });
                                    if (sendReceiveAll != null)
                                    {
                                        sendReceiveAll.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod, null, sendReceiveAll, new object[] {});
                                        found = true;
                                    }
                                }
                            }
                        }
                    }
                    catch (COMException exception)
                    {
                        _tracer.TraceException(exception);
                    }
                    if (!found)
                    {
                        ShowErrorMessage();
                        return;
                    }

                    /*
                     * Parameters [0] = (int) 13;
                     * Parameters [1] = (int) 32828;
                     *
                     * object button = oDocument.GetType().InvokeMember( "FindControl",BindingFlags.InvokeMethod,null,oDocument, Parameters );
                     *
                     * object controls = button.GetType().InvokeMember( "Controls", BindingFlags.GetProperty, null, button, new object[] {} );
                     * object control0 = controls.GetType().InvokeMember( "Item", BindingFlags.GetProperty, null, controls, new object[] { 2 } );
                     * control0.GetType().InvokeMember( "Execute",BindingFlags.InvokeMethod,null,button, new object[] {} );
                     */
                }
                else
                {
                    object[] Parameters = new Object[2];
                    Parameters[0] = 1;
                    Parameters[1] = 5488;
                    object button = null;
                    try
                    {
                        button = oDocument.GetType().InvokeMember("FindControl", BindingFlags.InvokeMethod, null, oDocument, Parameters);
                        if (button != null)
                        {
                            button.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod, null, button, new object[] {});
                        }
                    }
                    catch (COMException exception)
                    {
                        _tracer.TraceException(exception);
                        button = null;
                    }

                    if (button == null)
                    {
                        ShowErrorMessage();
                        return;
                    }
                }
                _tracer.Trace("Start of send/receive");
            }
            catch (COMException ex)
            {
                _tracer.TraceException(ex);
            }
        }