I'm trying to fetch attachments from a particular folder in Outlook 2010 in a C# Windows Forms app. I have a class called MailInbox that contains the Outlook namespace, inbox, and message objects.
Here is the code for that class and its methods:
public class mailInbox
{
    //declare needed variables for outlook office interop
    public Outlook.Application oApp = new Outlook.Application();
    //public Outlook.MAPIFolder oInbox;
    public Outlook.MAPIFolder idFolder;
    public Outlook.NameSpace oNS;
    public Outlook.Items oItems;
    public Outlook.MailItem oMsg;
    public Outlook.MAPIFolder subFolder;
    public string subFolderName;
    public mailInbox()
    {
        //read the subfoldername from a text file
        using (StreamReader subFolderNameRead = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\SuperVerify\config\subfoldername.txt"))
        {
            subFolderName = subFolderNameRead.ReadLine().Trim();
        }
        oNS = oApp.GetNamespace("mapi");
        //oInbox = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
        idFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Folders[subFolderName]; // use the subFolderName string, read from the config text file, to get the folder from outlook
        oItems = idFolder.Items;
        //oMsg = (Outlook.MailItem)oItems.GetNext();
    }
    public void FetchEmail() // fetches the next email in the inbox and saves the attachments to the superverify folder
    {
        oNS.Logon(Missing.Value, Missing.Value, false, true); //login using default profile. This might need to be changed.
        oMsg = (Outlook.MailItem) oItems.GetNext(); //fetch the next mail item in the inbox
        if(oMsg.Attachments.Count > 0) // make sure message contains attachments **This is where the error occurs**
        {
            for (int i =0; i< oMsg.Attachments.Count; i++)
            {
                oMsg.Attachments[i].SaveAsFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\SuperVerify\images\" + oMsg.Attachments[i].FileName); //save each attachment to the specified folder 
            }
        } else //if no attachments, display error
        {
            MessageBox.Show("The inbox folder has no messages.", "TB ID Verification Tool", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
    public void changeSubFolderName(string newSubFolderName)
    {
        subFolderName = newSubFolderName;
    }
}
When I click the button that invokes the FetchEmail method, I get the error 
System.NullReferenceException: 'Object reference not set to an instance of an object.'
oMsg was null. I thought that
public Outlook.MailItem oMsg;
instantiated the object and that
oMsg = (Outlook.MailItem) oItems.GetNext();
assigned it an Outlook MailItem, but it seems I don't understand what's going on here.
 
    