Ⅱ. やり方
1. NuGetから必要なライブラリをインストールする
Install-Package SmtpServer Install-Package MimeKit Install-Package System.Text.Encoding.CodePages
※.NET CLIの場合
dotnet add package SmtpServer dotnet add package MimeKit dotnet add package System.Text.Encoding.CodePages
2. サンプルプログラムを書く
using MimeKit; using SmtpServer; using SmtpServer.Mail; using SmtpServer.Protocol; using SmtpServer.Storage; using System; using System.Text; using System.Threading; using System.Threading.Tasks; namespace SmtpServerTest { public class SampleMessageStore : MessageStore { public override Task<SmtpResponse> SaveAsync(ISessionContext context, IMessageTransaction transaction, CancellationToken cancellationToken) { var textMessage = (ITextMessage)transaction.Message; var message = MimeMessage.Load(textMessage.Content); Console.WriteLine($"date: [{message.Date}]"); Console.WriteLine($"subject: [{message?.Subject}]"); Console.WriteLine($"text_body: [{message?.TextBody.Trim()}]"); Console.WriteLine($"html_body: [{message?.HtmlBody.Trim()}]"); return Task.FromResult(SmtpResponse.Ok); } } class Program { static async Task Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var options = new SmtpServerOptionsBuilder() .MessageStore(new SampleMessageStore()) .Port(25) .Build(); var smtpServer = new SmtpServer.SmtpServer(options); await smtpServer.StartAsync(CancellationToken.None); } } }
3. ドメインにMXレコードを登録する
4. Gmailから送信テスト
5. 受信結果
Ⅲ. トラブルシューティング
Q. メールが受信できない
A. ファイアウォール設定を適切に行う