掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SMTP認証するには (ID:142394)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
新米プログラマーで、会社が作るゴルフ場向け顧客管理システムの 「メール送信」部分を担当することになりました。VB2005. このソフトはパッケージソフトですので、いろいろなプロバイダや レンタルサーバに対応する必要があります。 ユーザーが使用するプロバイダやレンタルサーバのSMTPを使って メールを送信するのですが、 http://msdn.microsoft.com/ja-jp/library/cc720828.aspx を参考に作ったのですが、事はそんなに簡単ではありませんでした。 最近は迷惑メールを防止するためにいろいろな工夫がこれされているようで、 SMTPにいろいろな認証の仕組みが設けられているようです。 調べてみたところ、 ①SMTP-AUTH 認証なし ②SMTP-AUTH PLAIN ③SMTP-AUTH LOGIN ④SMTP-AUTH CRAM-MD5 ⑤POPbeforeSMTP ⑥Outbound Port 25 Blocking ⑦サブミッションポート(port 587) などがあって、何がなんだかわからずパニック状態になりました。 その後調べた結果、⑤POPbeforeSMTP はSMTPに接続する前にPOPの認証を 問う仕組みで、 どこかのサイトを参考にして以下のようにコードを書いたら、何とか乗り切れました。 'POP Before SMTP サーバのため、一度POPサーバにログインにて認証を得る Dim r_Client As New System.Net.Sockets.TcpClient Dim userName As String = returnMailAccount.UserName Dim password As String = returnMailAccount.PassWord r_Client.SendTimeout = 10000 r_Client.ReceiveTimeout = 10000 r_Client.Connect(returnMailAccount.PopHost, 110) Dim sw As New IO.StreamWriter(r_Client.GetStream()) Dim sr As New IO.StreamReader(r_Client.GetStream()) sw.AutoFlush = True 'MsgBox("1 " & sr.ReadLine) 'sw.WriteLine("USER " & userName & "PASS " & password & "QUIT") sw.WriteLine("USER " & userName) '念ため1コマンドずつ実行した 'MsgBox("2 " & sr.ReadLine) sw.WriteLine("PASS " & password) 'MsgBox("3 " & sr.ReadLine) sw.WriteLine("QUIT") 'MsgBox("4 " & sr.ReadLine) r_Client.Close() 'SMTPクライアント Dim s_client As New System.Net.Mail.SmtpClient(returnMailAccount.SmtpHost, CInt(returnMailAccount.PortNo)) 'SMTPアカウントとポート番号(通常は25。サブミッションポート(Port587)に対応しているので#587番を指定) '送信 s_client.Send(message) MessageBox.Show("メールを送信しました。", "送信終了") 'ToとBccに送信して終了。 Catch ex As Exception MessageBox.Show("送信できませんでした。", "エラー") ⑥Outbound Port 25 Blockingと⑦サブミッションポート(port 587)についても 25番でまずければ587番を指定できる(returnMailAccount.PortNo)ようにすれば 対応できることがわかりました。 長々と前置きが長くてスミマセン。 ①〜⑦までを並列に並べることがおかしかったのかもしれませんが、 問題は ①SMTP-AUTH 認証なし ②SMTP-AUTH PLAIN ③SMTP-AUTH LOGIN ④SMTP-AUTH CRAM-MD5 なんですけど、何をどのようにコードに表現したらよいものかがわかりません。 これらは、各プロバイダやレンタルカーバによって指定されているものなんでしょうか。 それとも、メールを送信する側が、SMTPに対して指定すればよいものなのでしょうか? よろしくご指導下さい。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.