SMTPサーバーを利用してプログラムからメールを送信する - C#
SMTPサーバーを利用してプログラムからメールを送信するコードを紹介します。
概要
C#でSMTPサーバーを利用してメールを送信するコードを紹介します。
この記事ではポート25番を利用して認証が不要なSMTPサーバーでメールを送信する例を紹介します。現在ほとんどのプロバイダーでは、OP25Bが適用されているため、この記事のコードを利用して、ポート25を利用してメールを送信できるSMPサーバーは限られていることに注意してください。
(回線を契約しているプロバイダー、イントラネット、ローカルネットワークに構築されたSMTPサーバー等に限られます。)
インターネットに公開されているSMTPサーバーを利用する場合はサブミッションポート(ポート587)を利用する必要があり、送信時にはSMTP Auth, POP before SMTP などの認証が必要になります。
SMTP Authを利用してメールを送信する場合は
こちらの記事を、GmailのSMTPサーバーを利用する場合のコードについては
こちらの記事を参照してください。
プログラム例
Windows Formアプリケーションを新規に作成します。
UI
下図のUIを作成します。ボタンと複数行のテキストボックスを配置します。
コード
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Mail;
namespace SimpleSmtp
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("auto@ipentec.net", "自動送信メール");
msg.To.Add(new MailAddress("ipentec.sample.email@gmail.com", "SampleMan"));
msg.Subject = "メッセージ件名";
msg.Body = "メール本文です。";
SmtpClient sc = new SmtpClient();
sc.Host = "mail.xxxxxxxx.ne.jp";
sc.Port = 25;
sc.Send(msg);
msg.Dispose();
textBox1.Text+="メールを送信しました\r\n";
}
}
}
解説
メールのメッセージ、送信先、送信者などメールの送信データはMailMessageオブジェクトを利用します。
下記のコードではMailMessageオブジェクトを作成し、Fromプロパティにメールの送信者を、Toプロパティにメールの宛先を、Subjectプロパティにメールのサブジェクトを、Bodプロパティにメールメッセージの本文を設定しています。
MailMessage msg = new MailMessage();
msg.From = new MailAddress("auto@ipentec.net", "自動送信メール");
sg.To.Add(new MailAddress("ipentec.sample.email@gmail.com", "SampleMan"));
msg.Subject = "メッセージ件名";
msg.Body = "メール本文です。";
メールの送信処理はSmtpClientオブジェクトを利用します。接続先のSMTPサーバーのホスト名や接続するポート番号などをSmtpClientオブジェクトに設定します。
SmtpClient sc = new SmtpClient();
sc.Host = "mail.xxxxxxxx.ne.jp";
sc.Port = 25;
メールの送信はSmtpoClientオブジェクトのSendメソッドを呼び出します。引数に送信するメールのMailMessageオブジェクトを与えます。送信後MailMessageオブジェクトのDisposeメソッドを呼び出しオブジェクトを破棄します。
sc.Send(msg);
msg.Dispose();
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。メールが送信されます。送信が完了すると「メールを送信しました」の文字列がテキストボックスに表示されます。
メールを確認します。コードに設定した送信元が「自動送信メール」のメールが届いています。
メールの本文を確認します。コードで記述した本文と同じ内容でメールが届いています。
プログラムから、SMTPを利用してメールを送信できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用