Export Lotus Notes (.NSF) messages with Aspose.Email
Tags: beginners, csharp, java, programming
Published: 2019-11-20 12:12:08

###What is IBM Notes?
**IBM (Lotus) Notes** and **IBM Domino** are the client and server, which represents a collaborative client-server software platform. IBM Notes and Domino is a distributed document-oriented NoSQL database and messaging framework and a rapid application development environment that includes pre-built applications like email, calendar, and others. IBM Notes differs from its primary commercial competitors, like Microsoft Exchange, which are purpose-built applications for mail and calendaring that offer APIs for extensibility. The history of IBM Notes is spanning more than 30 years.

###What does Lotus consist of?
IBM Notes provides plenty of useful functions, such as:
* Email
* Calendars
* To-do lists
* Contact management
* Discussion forums
* File sharing
* Microblogging
* Instant messaging
* Blogs
* User directories

###Why did people choose it?
<p><strong>Lotus Notes</strong> was one of the first applications providing business collaboration functions. When it was published in the 90s, it became an instrumental in turning "chat groups" and "message boards" into the right online collaboration workspaces as we know it now.</p>
<p>By the way, before HTTPS was even invented, Lotus Notes <strong>provided its authentication certificate</strong> for connecting to online data sources with encryption, which is called Lotus Notes ID. Therefore, Lotus Notes applications and databases were encrypted and could only be used <strong>by authorized users</strong> by their Notes ID.</p>
<p>Replication of Lotus Notes allowed keeping multiple copies of databases on various servers and local machines. It allowed developers to create rich text databases with variable length data records.</p>

So, we can highlight two main reasons why people were choosing it:
1. **Security**. IBM Notes Domino scales down security risks for an organization more than MS Office does. As we know, MS Office attracts hackers with Office macros allowing malicious scripts that may run in Office to trigger crypto viruses or locally stored malware. Some people admit that IBM Domino is more secure, and others claim that now it is not popular enough to attract hackers' attention. The point is that using IBM Notes Domino is safer compared to MS Office.

2. **Stability**. Lotus IBM Notes has a long history on the market. This software solution has remained stable for over 20 years, whick means that companies that have invested in working with this product can be calm about their investments.

###Why do people move from IBM Notes?
If everything is so good, you may ask, "Why people move from IBM Notes?".
There are some reasons for that:
1. The **high cost** of IBM Lotus Notes solution.

2. I have found a chat message branch from 1997. And there is one main disadvantage that was accurate with Domino Server more than 20 years ago – **large consumption of RAM**. Also, Lotus Notes requires more space on the system comparing with MS Outlook.

3. **Problems with multitasking**. For example, if you try to sort a view in NSF file with 1000000 documents and read the mail while the sort finished, it can become *"mission impossible"* as **it cannot be done at the same time**.

4. **Problems with Lotus Notes Calendar**. If you receive many messages a day, you can miss an appointment, and you will miss a meeting. Because if you do not accept a meeting invite, it never shows up in the calendar view. You have to create a separate folder for meeting responses. If you accidentally delete the calendar document or response document – everything will disappear.

5. **Popularity**. Comparing IBM Notes with MS Office, we can admit that Microsoft's solution is much more popular. 

6. IBM Notes **doesn't look user-friendly**. More and more users are familiar with the Microsoft solution. This fact impacts on the speed of onboarding and degree of overall efficiency. New employees don't have to learn how to set a calendar appointment or send an email, which increases the productivity of the company. Some administrators find Notes Domino hard to administrate.

7. **Integration issues**. SaaS model is very popular nowadays. There are many great tools available for many aspects of business. The greatest thing about SaaS is that it easily integrates with large software tools. If you are using IBM Notes server Domino, it can be a challenge to set up integration between the server and SaaS.

8. **Configuration**. Other platforms come with a good central management right out of the box, while you have to spend a lot of time to configure IBM Notes Domino.

###Moving Mailbox from IBM Notes.
<p>All the abovementioned points force to migrate from IBM Notes. And the first step - is migrating messages.</p>
<p>All messages are stored in <strong>NSF storage</strong>, which is initial storage in Domino Server. It’s hard to find information about NSF storage which makes hard to implement the data transferring from NSF storage.</p>
<p>The main risk that you should remember is that <strong>migration can’t be accurate for 100% between platforms</strong>. Files, attachments, data, settings, history, text layout can be corrupted or lost.</p>

###How to deal with NSF storage?
**[Aspose.Email](https://products.aspose.com/email/family?utm_source=https://dev.to/aspose_email/&utm_medium=email&utm_campaign=ibm-lotus-notes-with-aspose.email)** takes care of it. The API has versions for .NET, Java and others, implementing methods to work with NSF storage. Therefore, you don’t need to spend time and resources to implement them by yourself. 

[Aspose.Email](https://products.aspose.com/email/family?utm_source=https://dev.to/aspose_email/&utm_medium=email&utm_campaign=ibm-lotus-notes-with-aspose.email) provides **NotesStorageFacility** class with **EnumerateMessages** method to read NSF storage files. It iterates over the messages in the NSF storage file. The following sample code demonstrates how to use is for reading messages from the NSF storage file.

```c#
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Email();
using (NotesStorageFacility nsf = new NotesStorageFacility(dataDir + "SampleNSF.nsf"))
{
    foreach (MailMessage eml in nsf.EnumerateMessages())
    {
        eml.Save(eml.Subject + ".eml", SaveOptions.DefaultEml);
    }
}
```

Similar Java-based example:

```java
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(ReadMessagesFromNSFStorage.class) + "email/";
NotesStorageFacility nsf = new NotesStorageFacility(dataDir + "SampleNSF.nsf");
try {
for (MailMessage eml : nsf.enumerateMessages()) {
     eml.Save(eml.Subject + ".eml", SaveOptions.DefaultEml);
     }
} finally {
     nsf.dispose();
}
```
To find more about usage of Aspose.Email you can vist [Working with IBM Notes](https://docs.aspose.com/display/emailnet/working+with+ibm+notes?utm_source=https://dev.to/aspose_email/&utm_medium=email&utm_campaign=export-lotus-notes-nsf-messages-with-aspose-email).

You can say: "Ok. But how can I move my messages from NSF to PST?"
And this is a popular question.
Don't worry! Here is a sample of how simple it can be with [Aspose.Email](https://products.aspose.com/email/family?utm_source=https://dev.to/aspose_email/&utm_medium=email&utm_campaign=ibm-lotus-notes-with-aspose.email).
This library allows to work not only with NSF and PST formats but also with **MSG**, **OST**, **OFT**, **EML**, **EMLX**, **MBOX**, **ICS**, **VCF**, **HTML**, **MHTML**.

```c#
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
//Initialize NSF storage
using (NotesStorageFacility nsf = new NotesStorageFacility("SampleNSF.nsf"))
{
    //Initialize PST storage
    using (PersonalStorage pst = PersonalStorage.Create("outputPST.pst", FileFormatVersion.Unicode))
    {
        //Creating 'Inbox' folder in PST storage
        FolderInfo pstFolder = pst.CreatePredefinedFolder("Inbox", StandardIpmFolder.Inbox);

         //Run throught NSF storage
         foreach (MailMessage eml in nsf.EnumerateMessages())
         {
             MapiMessage msg = MapiMessage.FromMailMessage(eml);

             //Adding message into the folder in PST storage
             pstFolder.AddMessage(msg);
          }
     }
}
```

There are **many other features** included in **Aspose.Email API**. Here you can find out more [details](https://products.aspose.com/email/family?utm_source=https://dev.to/aspose_email/&utm_medium=email&utm_campaign=ibm-lotus-notes-with-aspose.email)!
When time allows, you can check out **API examples** at [Github](https://github.com/aspose-email/). 
If you have any **questions and other API related issues**, ask in our [forum](https://forum.aspose.com/c/email?utm_source=https://dev.to/aspose_email/&utm_medium=email&utm_campaign=ibm-lotus-notes-with-aspose.email).