header
CodePanic! > C#.NET Tips > 今ここ

■メールを送信する

メールを送信する簡単なサンプルです。

送信先に,や;区切りでアドレスを入力し(1つでも構いません)
タイトルとメッセージを入力したら送信ボタンで送信します。
mail.jpg(30258 byte)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonSend_Click(object sender, EventArgs e)
        {
            try
            {
                // 送信先を,や;区切りで複数指定されていれば分割し、mailTo配列に入れる
                string[] separator = { ",;" };
                string[] mailTo = textBoxSendTo.Text.Split(separator, StringSplitOptions.RemoveEmptyEntries);

                // 送信先が1件でもあれば
                if (mailTo.Length >= 1)
                {
                    MailMessage msg = new MailMessage(
                        "from@from.com",        // 差出人Fromアドレス
                        mailTo[0],              // 送信先アドレス
                        textBoxTitle.Text,      // タイトル名
                        textBoxMessage.Text);   // メッセージ

                    // ヘッダを追加する時はこんな感じで(任意)
                    msg.Headers.Add("X-Mailer", "hogehoge");

                    // 文字コードを設定
                    Encoding enc = Encoding.GetEncoding("iso-2022-jp");
                    msg.SubjectEncoding = enc;
                    msg.BodyEncoding = enc;

                    // 送信先が2件以上あればCCに追加
                    if (mailTo.Length >= 2)
                    {
                        foreach (string to in mailTo)
                            msg.CC.Add(to);

                        // 最初のアドレスはToと重複なので削除
                        msg.CC.RemoveAt(0);
                    }

                    // SMTPサーバーのアドレスとポート
                    SmtpClient sc = new SmtpClient("pop.hogehoge.jp", 25);

                    // IDとPassword
                    sc.Credentials = new NetworkCredential("id", "password");

                    // 暗号化のためのSSLを利用するか?
                    sc.EnableSsl = false;

                    // 呼び出しがタイムアウトになるまでの時間(ミリ秒)
                    sc.Timeout = 10000;

                    // メール送信
                    sc.Send(msg);

                    // リソース解放
                    msg.Dispose();
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }
    }
}





Copyright © 2008.07 - shougo suzaki