先日(といっても結構たちましたかね)に、Live HotmailでSMTP認証が使えるようになりました。Liveメールを使用している私には特に関係ない話しだったんですが(Live Hotmail=Webメール、Liveメール=メールクライアント)、プログラムからメール送信に使いたいと思って調べてみた。
公式ヘルプを見たのだけど、わかりにくい! ニュースとしてはSMTP認証が使える! ってことが取り上げられていたと思うけどヘルプにはそんなこと書いてなくて、「Microsoft Outlook に電子メール アカウントを追加する」の「POP3 サーバーを使用して Microsoft Outlook に Windows Live Hotmail の電子メール アカウントを追加する」としてちらりとSMTPサーバーのアドレスが書いてあります。
そんなわけでコードで書くと以下の通り。認証とSSL通信使用がポイントかな? 値を変えるだけでGMailもいけました。ポートは25番ですが、たいていのプロバイダでは使えないと思うので変更が必要です。
Public Shared Sub Send()
Dim title = "件名"
Dim body = "本文"
Dim toAddress = "jz5あlive.jp".Replace("あ", "@") ' 宛先
Dim fromAddress = "jz5あlive.jp".Replace("あ", "@") ' 差出人
Dim smtpServer = "smtp.live.com" ' SMTPサーバー
Dim port = 25 ' ポート番号
Dim userName = "jz5あlive.jp".Replace("あ", "@") ' Live ID メールアドレス
Dim password = "*****" ' Live ID パスワード
Dim encoding = System.Text.Encoding.UTF8
Dim message As New MailMessage()
With message
.SubjectEncoding = encoding
.BodyEncoding = encoding
.From = New MailAddress(fromAddress, "JZ5", encoding)
.To.Add(New MailAddress(toAddress, "JZ5", encoding))
.Subject = title
.Body = body
End With
Dim client = New SmtpClient() With { _
.Host = smtpServer, _
.Port = port, _
.Credentials = New NetworkCredential(userName, password), _
.EnableSsl = True}
client.Send(message) ' 送信
End Sub