訪問して頂きありがとうございます。まさふくろーです。
この記事では、メールにファイルを添付して送信する方法をご紹介します。
目次
メールにファイルを添付して送信する
Step.1 本文の設定
MimeKit.TextPart(MimeKit.Text.TextFormat.テキスト形式)
指定できるテキスト形式 | |
メンバ名 | 内容 |
Plain | プレーンテキスト形式 |
Text | プレーンテキスト形式のエイリアス |
Flowed |
フローテキスト形式 |
Html | HTMLテキスト形式 |
Enriched | エンリッチテキスト形式 |
RichText | リッチテキスト形式 |
MimeKit.textPart.Text = 文字列
Step.2 添付ファイルの情報をMIMEコンテンツに設定
MimeKit.MimePart.Content = New MimeKit.MimeContent(IO.File.OpenRead(添付ファイルのパス)
Step3. 添付ファイルの表示形式の設定
MimeKit.MimePart.ContentDisposition = textPart.ContentDisposition
Step4. メール本文のエンコードの設定
MimeKit.MimePart.ContentTransferEncoding = MimeKit.ContentEncoding.Base64
Step5. 添付ファイル名の設定
MimeKit.MimePart.FileName = IO.Path.GetFileName(添付ファイルのパス)
Step6. 本文と添付ファイルの情報をMultipartクラスに設定
MimeKit.Multipart.Add(MimeKit.textPart)
MimeKit.Multipart.Add(MimeKit.MimePart)
Step7. Multipartの設定をMimeMessageクラスのBodyプロパティに設定
message.Body = MimeKit.Multipart
サンプルプログラム
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 45 46 47 48 49 50 51 52 53 54 |
Public Class Form1 Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim fromAdress As String = TextBox1.Text Dim toAdress As String = TextBox2.Text Dim subject As String = TextBox3.Text Dim body As String = TextBox4.Text Dim pass As String = "samplepass" Try Dim message = New MimeKit.MimeMessage() message.From.Add(New MimeKit.MailboxAddress("Fromサンプル", fromAdress)) message.To.Add(New MimeKit.MailboxAddress("Toサンプル", toAdress)) message.Subject = subject Dim textPart = New MimeKit.TextPart(MimeKit.Text.TextFormat.Plain) textPart.Text = body Dim Filepath = "C:\sample\sample.txt" Dim attachment = New MimeKit.MimePart attachment.Content = New MimeKit.MimeContent(IO.File.OpenRead(Filepath)) attachment.ContentDisposition = textPart.ContentDisposition attachment.ContentTransferEncoding = MimeKit.ContentEncoding.Base64 attachment.FileName = IO.Path.GetFileName(Filepath) Dim multipart = New MimeKit.Multipart multipart.Add(textPart) multipart.Add(attachment) message.Body = multipart Using client As New MailKit.Net.Smtp.SmtpClient() Await client.ConnectAsync("smtp.gmail.com", 587) Await client.AuthenticateAsync(fromAdress, pass) Await client.SendAsync(message) Await client.DisconnectAsync(True) End Using Label1.Text = "送信しました。" Catch ex As Exception Label1.Text = Err.Description End Try End Sub End Class |
2 | 「Gmailに送信」ボタンクリック時に以下処理を行う。(Async修飾子を設定) |
12 | MimeKit.MimeMessageのインスタンス化。 |
14 | Fromプロパティの設定。 |
15 | Toプロパティの設定。 |
16 | Subject(件名)プロパティの設定。 |
18 | 本文のテキスト形式をプレーンに設定。 |
19 | 本文の内容を、Textプロパティに設定。 |
21 | ファイルパスを指定。 |
22 | MimeKit.MimePartのインスタンス化。 |
24 | 添付ファイルの情報をMIMEコンテンツに設定。 |
25 | 添付ファイルの表示形式を、18行目で指定したプレーンテキストに設定。 |
26 | メール本文のエンコードをBase64に設定。 |
27 | ファイル名を「C:\sample\sample.txt」に設定。 |
29 | MimeKit.Multipartのインスタンス化。 |
31 | 本文の情報をMultipartクラスに設定。 |
32 | 添付ファイルの情報をMultipartクラスに設定。 |
34 | Multipartの設定をMimeMessageクラスのBodyプロパティに設定。 |
36 | MailKit.Net.Smtp.SmtpClientのインスタンス化。 |
38 | GmailのSMTPサーバに接続。 |
39 | SMTPサーバのユーザー認証。 |
40 | Gmailへ送信。 |
41 | SMTPサーバの切断。 |
45 | 処理が完了したら、正常終了のメッセージをラベルに表示する。 |
47 | 処理の実行中にエラーが発生した場合、 |
49 | エラー内容を取得し、ラベルに表示する。 |
関連記事
Gmailへメールを送信する
Usingステートメント
【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する
構造化例外処理
最後まで読んでいただき、ありがとうございました!