- - PR -
VB.Net2003のSMTPメール送信方法について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-23 21:38
OS:Win2000 Pro
.Net Framework:1.1 お世話になります。 VB.Net2003 にてSMTPサーバを指定してメール送信を行いたいのですが、System.Web.Mail.MailMessageクラスのパスワードとIDを求められるBASIC認証以外で送信する方法が分からず困っております。 最初,下記のコードを実行しておりましたが、以下のエラーが発生して送信できませんでした。 ex.GetBaseException.ToStringにて取得 「System.Runtime.InteropServices.COMException (0x80040211): メッセージを SMTP サーバーに送信できませんでした。転送エラー コードは 0x80040217 です。サーバーからの応答は次のとおりです。not available」 >実行コード .Net 1.1ver---------------------------------- Dim mm As New System.Web.Mail.MailMessage mm.From = "FROM <xxx@xxx.co.jp>" mm.To = "xxx@xxx.co.jp" mm.Subject = "SUBJECT" mm.Body = "BODY" mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220) System.Web.Mail.SmtpMail.SmtpServer = "ms.xxx.xxx.jp" System.Web.Mail.SmtpMail.Send(mm) ’←*エラー発生 >------------------------------------------------------ そこで、送信前に下記のBASIC認証を加えると送信が可能になりました。 ’BASIC認証 mm.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 mm.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx" mm.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxxxxx" ですが NTLM認証では上と同じエラーが出てしまいます。 ’NTLM認証 mm.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2 mm.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 mm.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "ms.xxx.xxx.jp" しかし、このファイル自体がコンソールファイルで頻繁にメールを自動送信したい為、毎度のパスワード設定ができません。(パスワードの保存は避けたいです) 利用している環境では、NTLM認証自体が許されないのかと(すみませんSMTPに詳しくないのですが…).Net Framework2.0の System.Net.Mail.MailMessageクラスでパスワード無しに送信してみると、きちんと送信されました。 >実行コード .Net 2.0ver---------------------------------- Imports System.Net.Mail Module Module1 Sub Main() Dim objMail As New MailMessage Dim objSMTP As New SmtpClient objMail.From = New MailAddress("xxx@xxx.co.jp", "FROM") objMail.ReplyTo = New MailAddress("xxx@xxx.co.jp", "REPLYTO") objMail.To.Add(New MailAddress("xxx@xxx.co.jp", "TO")) objMail.Subject = "SUBJECT" objMail.Body = "BODY" objSMTP.Host = "ms.xxx.xxx.jp" objSMTP.Port = 25 objSMTP.Send(objMail) objMail.Dispose() End Sub End Module >---------------------------------- 記載させて頂いた状況で パスワードを設定せずに、送信できる方法にもしお心あたりがございましたら どうかアドバイス頂けませんでしょうか。 環境について説明が足らない点等ございましたら、お手数ですがご指摘よろしくお願い致します。 | ||||||||
|
投稿日時: 2008-04-23 22:20
よくわからないけど
SMTPサーバーのOSは何ですか? (NTLM認証が無いor有効でない 可能性があるので確認してはどうでしょうか?) | ||||||||
|
投稿日時: 2008-04-24 14:10
indigo-x 様
ご回答ありがとうございます。 レンタルの為、今はっきりと確認ができないのですが、サーバのOSはLinux系のようです。 確認してみます。 ただ、同じ自分のマシンからテストして、.Net2.0ではNTLM認証ができて.Net1.1ではBasic認証しかできませんでしたので、元々サーバはNTLM認証可では無いか→.Net1.1のコードに何か足りない点があるのではないか、と質問させて頂きました。 アドバイスありがとうございます。
[ メッセージ編集済み 編集者: MI 編集日時 2008-04-24 14:21 ] | ||||||||
|
投稿日時: 2008-04-24 17:03
Linux系ではNTLM認証はないのでは。。(Samba?)
おそらく.NET2.0で正常に実行されるのはPOP before SMTPを 使用しているからでしょう。 (30分ぐらい時間をおいたらエラーになると思います) で、ドメインの外なら、どちらにしろパスワードとIDは やはり要りますね。 | ||||||||
|
投稿日時: 2008-04-24 23:32
ご回答ありがとうございます。
パスワードを設定しない=NTLM認証かとおもっておりました。お恥ずかしいです。。。 以下、自分にとって情報の宝庫ですので、色々調べてからお返事させてください。
ありがとうございました。 |
1