【vb.net】SMTPサーバーにXserverを用いてメールを送信する方法

VB.NET

VB.NETで、SMTPサーバーにXserverを用いてメールを送信する方法の個人メモとなります。参考までにお使い下さい。

Xserverでメールアカウントを作成する

まずXserverのメールアカウントを作成する必要があります。詳しくは下記の記事に書かれていますので読んでみてください。

メールソフトの設定 | レンタルサーバーならエックスサーバー
レンタルサーバー「エックスサーバー」のご利用マニュアル|サーバーパネルで作成したメールアドレスを各メールソフトで使用する際の設定内容について記載しています。

メールアカウント名とパスワードはプログラムソースに使うので覚えておいてください。

もし海外に滞在しているような場合は下記のように設定すればいいと思います。

MailKitをプロジェクトに取り込む

今回はmailkitを用いてメールを送信することにします。ですのでまずはプロジェクトにmailkitを取り込みます。

1.当該プロジェクトをVisualStudioで立ち上げ、[ソリューションのNugetパッケージの管理(N)]を押します。

2.下記をしてください。

①”参照”を押します。
②”MailKit”と入力します。
③MailKitを選択します。
④MailKitをインストールするプロジェクトにチェックを付けます
⑤[インストール]をクリックします。

プログラムソース

上記で取り込んだmailkitを使ってメールの送信を行います。また最初に用意したXserverのメールアカウントも用います。

下記のプログラムソースの大かっこ{}の箇所を適宜文字列に変更して使用してください。

Dim mimMsg = New MimeKit.MimeMessage
'送信者
mimMsg.From.Add(New MimeKit.MailboxAddress({送信者の名前}, {送信者のメールアドレス(Xserverメールアカウント名)}))
'宛先(TO)
mimMsg.To.Add(New MimeKit.MailboxAddress({受信者の名前}, {受信者のメールアドレス}))
'宛先(CC)
mimMsg.Cc.Add(New MimeKit.MailboxAddress({受信者の名前}, {受信者のメールアドレス}))
'宛先(BCC)
mimMsg.Bcc.Add(New MimeKit.MailboxAddress({受信者の名前}, {受信者のメールアドレス}))
'送信メールのタイトル
mimMsg.Subject = {送信メールのタイトル}
'メール本文を作成する
Dim tepText = New MimeKit.TextPart(MimeKit.Text.TextFormat.Text)
tepText.Text = {送信メールの本文}
'添付ファイルを設定する
Dim txtPath As String = {添付ファイルの絶対パス}
Dim mimeType As String = MimeKit.MimeTypes.GetMimeType(txtPath)
Dim micAttach As MimeKit.MimePart = New MimeKit.MimePart(mimeType)
micAttach.Content = New MimeKit.MimeContent(System.IO.File.OpenRead(txtPath))
micAttach.ContentDisposition = New MimeKit.ContentDisposition(MimeKit.ContentDisposition.Attachment)
micAttach.ContentTransferEncoding = MimeKit.ContentEncoding.Default
micAttach.FileName = System.IO.Path.GetFileName(txtPath)
Dim mimlBody As MimeKit.Multipart = New MimeKit.Multipart("mixed")
mimlBody.Add(tepText)
mimlBody.Add(micAttach)
mimMsg.Body = mimlBody
'添付ファイルをつけない場合は↓のコメント行のようにtepTextをつければ良い。
'mimMsg.Body = tepText

Using misClient = New MailKit.Net.Smtp.SmtpClient()
    Try
        misClient.Connect({SMTP サーバー}, 465)
        misClient.Authenticate({Xserverメールアカウント名}, {パスワード})
        misClient.Send(mimMsg)
        misClient.Disconnect(True)
        '非同期で送信する場合は↓のコメントアウトの内容を用いたうえで、呼び出し元の関数に「Async」を付ければ良い。
        ' Await misClient.ConnectAsync({SMTP サーバー}, 465)
        ' Await misClient.AuthenticateAsync({Xserverメールアカウント名}, {パスワード})
        ' Await misClient.SendAsync(mimMsg)
        ' Await misClient.DisconnectAsync(True)
    Catch ex As Exception
        Throw New Exception(ex.Message & vbCrLf & vbCrLf & "メールの送信が失敗しました。")
    End Try
End Using

以上となります。参考になれば幸いです。

タイトルとURLをコピーしました