If you’re comfortable with a tiny script, this Python approach worked for me uses extract_msg to read .msg and email to write .eml. Batchable and you can tweak to keep folder structure:
# pip install extract_msg
import extract_msg, os
from email.message import EmailMessage
from email.policy import default
src = "path/to/msg_folder"
dst = "path/to/output_eml"
os.makedirs(dst, exist_ok=True)
for fname in os.listdir(src):
if not fname.lower().endswith(".msg"):
continue
path = os.path.join(src, fname)
msg = extract_msg.Message(path)
em = EmailMessage(policy=default)
if msg.subject: em["Subject"] = msg.subject
if msg.sender: em["From"] = msg.sender
if msg.date: em["Date"] = msg.date
if msg.to: em["To"] = msg.to
body = msg.body or ""
em.set_content(body)
# attachments
for att in msg.attachments:
data = att.data
aname = att.filename or att.longFilename or "attachment"
em.add_attachment(data, maintype="application", subtype="octet-stream", filename=aname)
out_name = os.path.splitext(fname)[0] + ".eml"
with open(os.path.join(dst, out_name), "wb") as f:
f.write(em.as_bytes())
Test on 5 files first. This keeps attachments and basic headers you can expand it to convert HTML body, inline images, or preserve subfolders.