はじめに
メールを送る際に、System.Net.Mailが非推奨となっていた。
そのため、代替案を調査した。
前提
環境
.NET 8.0
MailKit 4.7.1.1
Outlook 2016
代替案
結論から申し上げると、MailKitをおすすめする。
OutlookをC#から操作する方法を使用した場合、メールを送信せず、Outlookが勝手に終了することがあるためである。
MailKit
OutlookをC#から操作する方法に比べ面倒が少ないため、MailKitをおすすめする。
また、Microsoftの公式ドキュメントに「MailKit」を名指しで書いているだけあり、ネットで検索した際に情報量が多いというメリットもある。
サンプルコード
@ITの「テキストメールを送信するには?」を参照すること。
記事は古いが、.NET 8.0のC#でも動作した。
Outlook(COMオブジェクト)
セットアップ済みのOutlookさえあれば、動作可能な点がメリットである。
一方で下記デメリットが存在する。
- Outlookのインストール・セットアップが必要であること。
- Outlook起動中に、C#からOutlookを操作し、メールを送信しようとすると、メッセージボックスが表示されてしまう。
※ メッセージボックスにて、何も選択しない場合は、メールを送信せずに終了する。
表示されるメッセージボックス
サンプルコード
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Runtime.InteropServices;
namespace Sample
{
class Program
{
static void Main(string[] args)
{
var outlook = new Outlook.Application();
try
{
Outlook.MailItem mail = outlook.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
Outlook.AddressEntry currentUser = outlook.Session.CurrentUser.AddressEntry;
mail.Body = "hoge";
mail.Recipients.Add("hoge@hoge.com");
mail.Recipients.ResolveAll();
mail.Send();
}
finally
{
outlook.Quit();
Marshal.ReleaseComObject(outlook);
}
}
}
}
注意事項
下記DLLの参照設定が必要である。
Microsoft.Office.Interop.Outlook.dll
さいごに
「System.Net.Mail」の代替案を調査した結果、「MailKit」をおすすめする。
参考文献