C#

SendGrid C#ライブラリの利用を推奨します。ライブラリのドキュメントについてはGithubを参照してください。

このライブラリはV2 APIをサポートしませんが、旧バージョンのライブラリを利用することでV2 APIを利用可能です。詳細については Continue Using V2 in C#を参照してください。

SendGrid C#ライブラリの利用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// using SendGrid's C# Library - https://github.com/sendgrid/sendgrid-csharp
using System.Net.Http;
using System.Net.Mail;

var myMessage = new SendGrid.SendGridMessage();
myMessage.AddTo("test@sendgrid.com");
myMessage.From = new EmailAddress("you@youremail.com", "First Last");
myMessage.Subject = "Sending with SendGrid is Fun";
myMessage.PlainTextContent = "and easy to do anywhere, even with C#";

var transportWeb = new SendGrid.Web("SENDGRID_APIKEY");
transportWeb.DeliverAsync(myMessage);
// NOTE: If you're developing a Console Application,
// use the following so that the API call has time to complete
// transportWeb.DeliverAsync(myMessage).Wait();

.NETビルトインSMTPライブラリの利用

SendGrid C#ライブラリを使用しない場合、.NETのビルトインライブラリを利用することができます。ASP.NETを使用している場合、web.config内にSMTPの設定を記述します。なお、ユーザ名には「SMTPの使用方法」に記載のとおり “apikey”を指定する必要があります。

1
2
3
4
5
6
7
<system.net>
  <mailSettings>
    <smtp from="test@domain.com">
      <network host="smtp.sendgrid.net" password="<your_api_key>" userName="apikey" port="587" />
    </smtp>
  </mailSettings>
</system.net>

このC#のプログラムはMIMEメールを作成しSendGridを通じて送信します。.NETにはメール送受信のためのビルトインライブラリが付属しています。 このサンプルは .NET Mail クラスを使用します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net.Mime;

namespace SmtpMail
{
  class Program
  {
    static void Main()
    {
      try
      {
        MailMessage mailMsg = new MailMessage();

        // To
        mailMsg.To.Add(new MailAddress("to@example.com", "To Name"));

        // From
        mailMsg.From = new MailAddress("from@example.com", "From Name");

        // Subject and multipart/alternative Body
        mailMsg.Subject = "subject";
        string text = "text body";
        string html = @"<p>html body</p>";
        mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Plain));
        mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));

        // Init SmtpClient and send
        SmtpClient smtpClient = new SmtpClient("smtp.sendgrid.net", Convert.ToInt32(587));
        System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username@domain.com", "your_api_key");
        smtpClient.Credentials = credentials;

        smtpClient.Send(mailMsg);
      }
        catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
      }

    }
  }
}