Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【C#】NLogでMail通知

NLogでメール通知ってどうやるんだろうなぁ。 やっぱSMTPサーバ立てないとダメかなぁと思っていたら、Gmailでできるやん! というのがあったので、やってみた。

参考

まんまだけど、下記公式Wikiを参考。

github.com

NLog Config

まずNLogコンフィグファイルを下記の通り設定。 今回はErrorをメール送信のルールとして設定しています。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <target name="gmail" xsi:type="Mail"
            smtpServer="smtp.gmail.com"
            smtpPort="587"
            smtpAuthentication="Basic"
            smtpUserName="mail@gmail.com" <!-- メール送信に使うアカウント -->
            smtpPassword="pass" <!-- メール送信に使うのパスワード -->
            enableSsl="true"
            from="mail@gmail.com" <!-- お好きなアドレス -->
            to="mail@gmail.com" <!-- お好きなアドレス -->
            cc="test@testsugimomoto.com" <!-- お好きなアドレス セミコロンで区切ることが可能 -->
          />
  </targets>

  <rules>
    <logger name="*" minlevel="Error" writeTo="gmail" />
  </rules>
</nlog>

C#を載せるまでもないかもだけど。

using System;
using NLog;

public class MyClass
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        Console.WriteLine("Start Log Test");

        logger.Error("Gmail Error Mail Log Test");

    }
}

これで送信されます。 ただし、Gmailのセキュリティ設定に引っかかることがあると思うので、 アプリケーションの許可をする必要あり。

こんな感じのメールが届きます。

f:id:sugimomoto:20150331001622p:plain