見出し画像

VMG形式のドコモメールをEML形式に変換し、Thunderbirdにインポート

スマホの料金プラン見直しに伴い、ドコモメールを解約したのですが、解約してから送受メールを残しておけばよかったと思って、スマホのアプリに保存されている送受信メールをPCに取り込み、Thuderbirdのローカルフォルダにインポートして、後で見返すことができるようにしようと考えました。

ドコモメールアプリからは、フォルダ単位で送受信メールをVMG形式のテキストファイルとして書き出すことができたので、ネット上で公開されているVMG→EML形式への変換ツールをいくつか試してみたのですが、うちのPC(Windows 11)で動作するものを見つけることができませんでした。

それで、VMGファイルをテキストエディタで開いてみると、 "BEGIN:VBODY" の行と "END:VBODY" の行に挟まれた部分は、EML形式のメールデータと同じようだったので、以下の仕様を Microsoft 365 Copilot Chat(GPT-4o)に渡して、C#で変換プログラムを書いてもらうことにしました。

文字コードはUTF8、改行コードはCR+LF、ファイル名が"dmail.vmg"のテキストファイルがあります。 テキストファイルの中には"BEGIN:VBODY"と"END:VBODY"で囲まれたテキストが複数あります。 このテキストファイルを開き、"BEGIN:VBODY"と"END:VBODY"で囲まれた部分のテキストを切り出し、切り出したテキストを、文字コードはUTF8、改行コードはCR+LF、ファイル名は"mail_XX.eml"("XX"の部分は連番とします)のテキストファイルとして、別々のファイルとして切り出すプログラムを考えてください。 プログラムはc#でお願いします。

Copilot が作成したプログラムコードが以下です。簡単な説明も付けてくれました。まあ、単純なプログラムなので、自分で書いてもそれほど時間はかからないと思いますが、それでも一回きりの作業としては面倒ですので、助かりますね。

以下のC#プログラムを使用して、指定された条件に従ってテキストファイルから"BEGIN:VBODY"と"END:VBODY"で囲まれた部分を切り出し、それぞれを連番付きの.emlファイルとして保存することができます。

using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string inputFilePath = "dmail.vmg";

        // テキストファイルを読み込む
        string content = File.ReadAllText(inputFilePath, Encoding.UTF8);

        // 'BEGIN:VBODY'と'END:VBODY'で囲まれた部分をすべて見つける
        MatchCollection matches = Regex.Matches(content, @"BEGIN:VBODY(.*?)END:VBODY", RegexOptions.Singleline);

        // 各部分を個別の.emlファイルとして保存する
        for (int i = 0; i < matches.Count; i++)
        {
            string section = matches[i].Groups[1].Value.Trim();
            string outputFilePath = $"mail_{i + 1:00}.eml";

            using (StreamWriter writer = new StreamWriter(outputFilePath, false, new UTF8Encoding(false)))
            {
                writer.Write(section);
                writer.Write("\r\n");
            }
        }

        Console.WriteLine("テキストが切り出され、個別の.emlファイルに保存されました。");
    }
}

このプログラムは、指定されたテキストファイル(例:dmail.vmg)を開き、"BEGIN:VBODY"と"END:VBODY"で囲まれた部分を抽出し、それぞれを連番付きの.emlファイル(例:mail_01.eml、mail_02.eml)として保存します。ファイルの文字コードはUTF-8、改行コードはCR+LFです。

早速、Visual Stuido Code で実行してみたところ、VMLファイルからメールデータが切り出され、複数のEMLファイルが連番で作成されました。

Visual Stuido Code で実行

あとは Thnderbird のローカルフォルダに適当なフォルダを作って、EMLファイルをドロップ&ドロップするだけです。

インポートが完了すると下図のようになり、添付ファイルも含め、メールデータが再現できました。めでたしめでたし。まあ、絵文字までは再現できていませんが、これ以上は面倒なので、そこまでは望みませんw

Thnderbird にインポートしたところ

ドコモメールはもうほとんど使ってなくて、たまに老母が らくらくスマートホン から送ってくるので残していたのですが、それも最近はLINEになっているので、ようやく。。。といった感じです。今年は年賀状もほとんど出さなかったし、一つの時代の区切りなのかもw

ただ、スマホの料金プランを見直した時に、ドコモメールを維持するのに300円/月かかることが分かり、そんなものに金払えるか!と思って勢いで解約してしまったので、事前に準備しておけば他に方法はあったと思います。反省。。。

いいなと思ったら応援しよう!