.NETプログラミング研究 第10号

.NET質問箱

複数の添付ファイルをメール送信するには?

質問:

「どぼん!のVB道」にある「SMTPでメールを送信する(添付ファイル、HTMLファイル、優先順位指定など)」ではメールで添付ファイルを送信する方法が説明されていますが、複数の添付ファイルを送るにはどのようにすればよいのでしょうか?

答え:

送信する添付ファイルごとにMailAttachmentオブジェクトを作成し、そのすべてをMailMessage.Attachmentsプロパティのコレクションに追加します。

次の例では、ファイル"test1.jpg"と"test2.jpg"の2つのファイルを添付ファイルとしたメールを送信しています。

  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
Dim mm As New System.Web.Mail.MailMessage()
Dim attachment As System.Web.Mail.MailAttachment
 
'送信者
mm.From = "sender <sender@xxx.xx.com>"
'あて先
mm.To = "recipient1 <recipient1@xxx.xx.com>"
'件名
mm.Subject = "テスト"
'本文
mm.Body = "こんにちは。これはテストです。"
'本文の文字コードを指定する(ここではJIS)
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)
 
'添付ファイルの指定
attachment = New System.Web.Mail.MailAttachment("test1.jpg")
'Attachmentsに追加する
mm.Attachments.Add(attachment)
'さらに添付ファイルを追加する
attachment = New System.Web.Mail.MailAttachment("test2.jpg")
mm.Attachments.Add(attachment)
 
'SMTPサーバーを指定する
System.Web.Mail.SmtpMail.SmtpServer = "localhost"
'送信する
System.Web.Mail.SmtpMail.Send(mm)
  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
System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
System.Web.Mail.MailAttachment attachment;
 
//送信者
mm.From = "sender <sender@xxx.xx.com>";
//あて先
mm.To = "recipient1 <recipient1@xxx.xx.com>";
//件名
mm.Subject = "テスト";
//本文
mm.Body = "こんにちは。これはテストです。";
//本文の文字コードを指定する(ここではJIS)
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220);
 
//添付ファイルの指定
attachment = new System.Web.Mail.MailAttachment("test1.jpg");
//Attachmentsに追加する
mm.Attachments.Add(attachment);
//さらに添付ファイルを追加する
attachment = new System.Web.Mail.MailAttachment("test2.jpg");
mm.Attachments.Add(attachment);
 
//SMTPサーバーを指定する
System.Web.Mail.SmtpMail.SmtpServer = "localhost";
//送信する
System.Web.Mail.SmtpMail.Send(mm);

フォルダを指定して「フォルダの選択ダイアログ」を表示するには?

質問:

「どぼん!のVB道」にある「フォルダの選択ダイアログを表示する」でのFolderNameEditorの派生クラスを使った方法で、任意のフォルダをダイアログ表示時に最初に選択されるフォルダに指定することができますか?

答え:

FolderNameEditorの派生クラスを使った方法では、Desktop、MyComputer、MyDocumentsなど、FolderNameEditor.FolderBrowserFolder列挙体のメンバしか指定できません。

しかし、.NET Framework 1.1以降では、FolderBrowserDialogクラスを使うことにより「フォルダの選択ダイアログ」を表示することが出来るようになり、この方法ではSelectedPathプロパティで任意のフォルダを指定してダイアログを表示できます。

次の例ではFolderBrowserDialogクラスを使用して、最初にフォルダ"C:\Windows"が選択された状態で「フォルダの選択ダイアログ」が表示されるようにしています。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
'FolderBrowserDialogクラスのインスタンスを作成
Dim fbd As New FolderBrowserDialog
 
'上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。"
'最初に選択するフォルダを指定する
fbd.SelectedPath = "C:\Windows"
 
'ダイアログを表示する
If fbd.ShowDialog(Me) = DialogResult.OK Then
    '選択されたフォルダを表示する
    Console.WriteLine(fbd.SelectedPath)
End If
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
//FolderBrowserDialogクラスのインスタンスを作成
FolderBrowserDialog fbd = new FolderBrowserDialog();
 
//上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。";
//最初に選択するフォルダを指定する
fbd.SelectedPath = @"C:\Windows";
 
//ダイアログを表示する
if (fbd.ShowDialog(this) == DialogResult.OK)
{
    //選択されたフォルダを表示する
    Console.WriteLine(fbd.SelectedPath);
}

.NET Tips

DataGridの列に値を表示するときの書式を指定する

注意

この記事の最新版は「DataGridの列に値を表示するときの書式を指定する」で公開しています。

前回紹介した列スタイルを使い、DataGridの列に値を表示するときの書式を指定する方法を紹介します。

DataGrid内のある列について、数値データ"100000"を"\100,000"と表示させたり、日時データ"2003/5/1"を"2003年5月1日"と表示させたいときには、その列のDataGridTextBoxColumn.Formatプロパティで適当なテキストの書式を指定してやります。

ここではDataGrid1(DataGridオブジェクト)にDataTable1(DataTableオブジェクト、TableName="DataTable1")が連結されているものとし、数値データの"Column1"列と日時データの"Column2"列の書式を変更します。

なお、書式指定文字に関しては、次のページを参考にしてください。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
'DataGridTableStyleの取得
Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("DataTable1")
 
'"Column1"のDataGridTextBoxColumnを取得
'"Column1"は数値データ
Dim cs1 As DataGridTextBoxColumn
cs1 = CType(ts.GridColumnStyles("Column1"), DataGridTextBoxColumn)
'値の書式を地域通貨として指定する
cs1.Format = "c"
 
'"Column2"のDataGridTextBoxColumnを取得
'"Column2"は日時データ
Dim cs2 As DataGridTextBoxColumn
cs2 = CType(ts.GridColumnStyles("Column2"), DataGridTextBoxColumn)
'値の書式を長い日付として指定する
cs2.Format = "D"
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
//DataGridTableStyleの取得
DataGridTableStyle ts;
ts = DataGrid1.TableStyles["DataTable1"];
 
//"Column1"のDataGridTextBoxColumnを取得
//"Column1"は数値データ
DataGridTextBoxColumn cs1;
cs1 = (DataGridTextBoxColumn) ts.GridColumnStyles["Column1"];
//値の書式を地域通貨として指定する
cs1.Format = "c";
 
//"Column2"のDataGridTextBoxColumnを取得
//"Column2"は日時データ
DataGridTextBoxColumn cs2;
cs2 = (DataGridTextBoxColumn) ts.GridColumnStyles["Column2"];
//値の書式を長い日付として指定する
cs2.Format = "D";

DataGridの列のテキストの配置方法を変更する

注意

この記事の最新版は「DataGridの列のテキストの配置方法を変更する 」で公開しています。

列のテキストの配置方法を左、右、中央に変更するには、その列のDataGridColumnStyle.AlignmentプロパティをそれぞれHorizontalAlignment.Left、HorizontalAlignment.Right、HorizontalAlignment.Centerにします。

ここではDataGrid1(DataGridオブジェクト)にDataTable1(DataTableオブジェクト、TableName="DataTable1")が連結されているものとし、列"Column1"を右揃えとします。

  1
  2
  3
  4
  5
  6
  7
  8
  9
'DataGridTableStyleの取得
Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("DataTable1")
 
'"Column1"のDataGridTextBoxColumnを取得
Dim cs1 As DataGridTextBoxColumn
cs1 = CType(ts.GridColumnStyles("Column1"), DataGridTextBoxColumn)
'右揃えとする
cs1.Alignment = HorizontalAlignment.Right
  1
  2
  3
  4
  5
  6
  7
  8
  9
//DataGridTableStyleの取得
DataGridTableStyle ts;
ts = DataGrid1.TableStyles["DataTable1"];
 
//"Column1"のDataGridTextBoxColumnを取得
DataGridTextBoxColumn cs1;
cs1 = (DataGridTextBoxColumn) ts.GridColumnStyles["Column1"];
//右揃えとする
cs1.Alignment = HorizontalAlignment.Right;

コメント



ページ情報
  • カテゴリ : .NET
  • 作成日 : 2010-06-16 (月) 06:00:00
  • 作成者 : DOBON!
  • 最終編集日 : 2010-03-20 (土) 02:44:06
  • 最終編集者 : DOBON!
[ トップ ]   [ 編集 | 凍結 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]