Skip to content

Message Storage

Norbert Bietsch edited this page Mar 7, 2018 · 1 revision

Working With The FileMessageStore

Create and Save

The FileMessageStore let's you manage mail messages stored in the file system. You can add all the locations and the search pattern for message files.

var fms = new FileMessageStore(new[] { "path-to-message-files" }, new[] { "Msg*.xml" }, Encoding.UTF8);
fms.Serialize("my-file-message-store.config", Encoding.UTF8);

Load

Later you can load the FileMessageStore:

var fms = FileMessageStore.Deserialize("my-file-message-store.config", Encoding.UTF8);

Process MailMergeMessages

// prepare the sender
var mms = new MailMergeSender()
{
    Config = Settings.Deserialize("path-to-settings-file", Encoding.UTF8).SenderConfig
};

// send each message loaded from the FileMessageStore
foreach (var info in fms.ScanForMessages())
{
    // messageInfos come from fast xml scan in MessageInfoBase, 
    // Info of the Messsage comes from YAXLib deserialization
    var mmm = info.LoadMessage();
                
    // sample for generating variables - to be implmented
    var variables = LoadDataFromSqlServer(info.Data);

    await mms.SendAsync(mmm, variables);
}

These few lines of code are the essence that you need to send a bunch of mail messages.

Interface IMessageStore

You can implement your own message store by implementing the IMessageStore interface. This could become e.g. a "MySqlMessageStore". For this task Dapper, a Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc. could be interesting.

Clone this wiki locally