.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 = "こんにちは。これはテストです。"
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)
attachment = New System.Web.Mail.MailAttachment("test1.jpg")
mm.Attachments.Add(attachment)
attachment = New System.Web.Mail.MailAttachment("test2.jpg")
mm.Attachments.Add(attachment)
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 = "こんにちは。これはテストです。";
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220);
attachment = new System.Web.Mail.MailAttachment("test1.jpg");
mm.Attachments.Add(attachment);
attachment = new System.Web.Mail.MailAttachment("test2.jpg");
mm.Attachments.Add(attachment);
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
| | 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 fbd = new FolderBrowserDialog();
fbd.Description = "フォルダを指定してください。";
fbd.SelectedPath = @"C:\Windows";
if (fbd.ShowDialog(this) == DialogResult.OK)
{
Console.WriteLine(fbd.SelectedPath);
}
|
.NET Tips †
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
| | Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("DataTable1")
Dim cs1 As DataGridTextBoxColumn
cs1 = CType(ts.GridColumnStyles("Column1"), DataGridTextBoxColumn)
cs1.Format = "c"
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 ts;
ts = DataGrid1.TableStyles["DataTable1"];
DataGridTextBoxColumn cs1;
cs1 = (DataGridTextBoxColumn) ts.GridColumnStyles["Column1"];
cs1.Format = "c";
DataGridTextBoxColumn cs2;
cs2 = (DataGridTextBoxColumn) ts.GridColumnStyles["Column2"];
cs2.Format = "D";
|
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
| | Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("DataTable1")
Dim cs1 As DataGridTextBoxColumn
cs1 = CType(ts.GridColumnStyles("Column1"), DataGridTextBoxColumn)
cs1.Alignment = HorizontalAlignment.Right
|
1
2
3
4
5
6
7
8
9
| | DataGridTableStyle ts;
ts = DataGrid1.TableStyles["DataTable1"];
DataGridTextBoxColumn cs1;
cs1 = (DataGridTextBoxColumn) ts.GridColumnStyles["Column1"];
cs1.Alignment = HorizontalAlignment.Right;
|
コメント †