DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.NETでメールを送るには

環境/言語:[Win2000,VB.NET]
分類:[.NET]

お世話になっております。
現在、VB.NETを使ってメールを送ろうと思っているのですが、色々試してみたのですが、まったくうまく行きません。
参考書やホームページを見ていると、SmtpMailクラスを使用すれば簡単らしいのですが、どうにもうまく行かず困っています。

SmtpMailクラスのSmtpServerオブジェクトにサーバー名を指定した場合、IISのインストールは必要ないだろうと決め付けているのですが、この考え自体が間違っているのでしょうか?

また、SmtpMailクラスを使用してメールを送るための必須条件などありましたら、お忙しい中、恐縮ではありますが、ご指導の程よろしくお願いします。。。
■No2278に返信(北北さんの記事)
> お世話になっております。
> 現在、VB.NETを使ってメールを送ろうと思っているのですが、色々試してみたのですが、まったくうまく行きません。
> 参考書やホームページを見ていると、SmtpMailクラスを使用すれば簡単らしいのですが、どうにもうまく行かず困っています。
>
> SmtpMailクラスのSmtpServerオブジェクトにサーバー名を指定した場合、IISのインストールは必要ないだろうと決め付けているのですが、この考え自体が間違っているのでしょうか?
>
> また、SmtpMailクラスを使用してメールを送るための必須条件などありましたら、お忙しい中、恐縮ではありますが、ご指導の程よろしくお願いします。。。
>
>
IISは必要ありません。くわしいSmtpMailクラスの使い方については
http://dobon.net/vb/dotnet/internet/smtpmail2.html
をみてください。
わからなかったら、もう一度質問してください。
一般人様、お忙しい中のレスありがとうございます。教えて頂いたリンクを参考にコードを組んでみたところ、、、

   Dim mm As New System.Web.Mail.MailMessage()
   mm.From = "sender <XXX@XXX.com>"
   mm.To = "recipient1 <XXXX@XXXX.com>"
   mm.Subject = "テスト"
   mm.Body = "こんにちは。これはテストです。"
   mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)
   System.Web.Mail.SmtpMail.SmtpServer = "smtpサーバー名"
   System.Web.Mail.SmtpMail.Send(mm) ←※

※の部分で「'CDO.Messga'にアクセスできません」といったエラーメッセージが出てきます。
自分なりに調べてみたのですが、CDOはメールを送るために使用するコンポーネンで、Win2000ではCDOSYSライブラリを登録することで利用できるということが解り(間違っていたら申し訳ありません…)、一度コマンドプロンプトでCDOSYS.dllの登録を解除後、コードを実行したところ、「'CDO.Messga'オブジェクトを作成できません」というメッセージに変わりました。このことから、CDOSYS.dll関係の問題という気がしているのですが、解決策がみつかりません。

時間が空いたときで構いませんので、どうかお力添えの程よろしくお願いいたします。ご迷惑をおかけします…。
■No2287に返信(北北さんの記事)
> ※の部分で「'CDO.Messga'にアクセスできません」といったエラーメッセージが出てきます。

いろいろ調べてみましたが、このエラーが出る原因の多くは、SmtpServer、From、Toプロパティの書き方が不正というケースのようです。しかし環境の違いにより同じ書き方でもエラーが出たり出なかったりするようです。

次のリンク先のページに対処法が詳しく書かれています。

・The scary "Could not access 'CDO.Message' object"
http://www.systemwebmail.com/faq/4.2.3.aspx
大変申し訳ありません!返事遅くなりました!

> いろいろ調べてみましたが、このエラーが出る原因の多くは、SmtpServer、From、Toプロパティの書き方が不正というケースのようです。しかし環境の違いにより同じ書き方でもエラーが出たり出なかったりするようです。

わざわざ調べて頂いてありがとうございました。自分も調べてみて環境に左右されるというところまでは行き着いたのですが、そこでいきづまっていました。。。


>
> 次のリンク先のページに対処法が詳しく書かれています。
>
> ・The scary "Could not access 'CDO.Message' object"
> http://www.systemwebmail.com/faq/4.2.3.aspx

ありがとうございます。このサイトを参考に試してみたところ、やはりうまくは行きませんでした(泣)
一番まともに行ったケースで言うと、Smtpサーバーをlocalhost(127.0.0.1)とし、中継を許可したときは表面上のエラーはでなくなったのですが、実際にメールが送られませんでした。調べてみるとmailrootフォルダ内のQueueフォルダに送ったメールデータがありました。どうやら、Smtpサービスが機能していない感じのようです(違うかもしれません)
もう少しIISとSMTPサービスの設定を勉強しなおし、再度挑戦してみたいと思います。

ただ、調べて頂いて大変恐縮なんですが、自分としてはIISを使用しないでメールを送りたいと考えています。上記のやり方だとIISが必須となってしまうと思うのです…。自分の質問の仕方が悪く申し訳ありませんでした。

現在はとりあえず、無料コンポーネントをダウンし、試してみたところ問題なく動いたので、それで代用しております。ただ、原因がわからないままというのは気持ち悪いので、時間を見つけて調べて、進展があったらまた書き込ませてもらいたいと思っています。

長くなってしまいすみませんでした。ご協力して頂いた方々。本当にありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板