質問者
VB.NETでスマートデバイスアプリケーションよりメール送信を行うには?

質問
-
現在、スマートデバイスアプリケーションの開発をVB.NETで行っています。
スマートデバイスアプリケーションからメール送信を行いたいと思っています。
compactframeworkを使うことになりますが、
POOMを利用するとメーラーが起動してしまうため、POOMの利用は避けようと思っています。
そこで下記のサイトを参考にしてみました。
ttp://netlog.jpn.org/r271-635/2008/04/windows_mobile_c.html
上記のサイトでは、 .NET Compact Framework 1.0以上で対応できると記述してありましたが、
実際に実行すると「 cl.Connect("mail.myserver.com", 587) VB版」でエラーになります。
ちなみに.net Framework上では問題なく動作したため、コーディングミスはありません。
TcpClientについても調べましたが、Microsoftのサイトでcompactframeworkに対応しているとありました。
しかし、実際にメールサーバーへ接続できないのは何故でしょうか?
アドバイスをよろしくお願い致します。- 編集済み 質問開発者 2009年9月10日 0:49
すべての返信
-
上記のサイトでは、 .NET Compact Framework 1.0以上で対応できると記述してありましたが、
実際に実行すると「 cl.Connect("mail.myserver.com", 587) VB版」でエラーになります。どのようなエラーになるのでしょうか?
エラーに関する情報を取り出せるようであれば、記述してみると回答を得やすいかもしれません。# 余談になりますが、「メーラー」ではなく「メールサーバー」への接続だと思います。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。 -
回答、ありがとうございます。
ご指摘の部分を訂正しました。
エラー内容は、「No connection could be made because the target machine actively refused it」となります。
ターゲットマシンが接続を拒否したため接続ができない、という意味になります。
同じソースでも.Net Framework上では動作します。
現在は、エミュレーターで動作確認していますが、実機でもテストしたところ、同様の結果になりました。
単純に、、、
Dim cl As New TcpClient()
cl.Connect("Localhost", 587)
、、、とするだけでエラーになる状態です。
数週間、ずっと悩んでいて解決できません。
何か考えられる原因が他にあるのでしょうか? -
単純に、、、
localhost の 587 番には何らかのサービスが起動しているのでしょうか?
Dim cl As New TcpClient()
cl.Connect("Localhost", 587)
、、、とするだけでエラーになる状態です。
エラーメッセージを見る限り、localhost の 587 番で Listen されていないか、拒否されているのだと思います。
そして、やりたいことは何でしょうか?
TcpClient でつなぎにいくということは、そこにメール送信用のサービスが動いていることが前提になりますが、デバイスから外部のメールサーバに繋ぐことが目的でしょうか?
それとも、デバイス内の標準で用意されているメーラにアクセスできる手段だと考えているのでしょうか?(私見ですが、localhost でメールサーバーが動いているという気はしないのですが…)
なお、私自身は詳しくないので、誤った指摘であれば申し訳ありません。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。 -
やりたいことは、デバイスから外部のメールサーバーに繋ぐことです。
すみません、「cl.Connect("Localhost", 587)」は確かに不自然な記述でした。
Locakhostの部分を該当するsmtpサーバーに設定しました。
これも.net framework上では動く内容ですが、compact framework上では、
下記のエラーが出てしまいます。
A socket operation encountered a dead network
調べても原因がわからず、また行き詰ってしまいました。
接続が失敗する理由として何が考えられるでしょうか? -
これも.net framework上では動く内容ですが、compact framework上では、
ネットワークに物理的に繋がっていないということは考えられます。
下記のエラーが出てしまいます。
A socket operation encountered a dead network
調べても原因がわからず、また行き詰ってしまいました。
接続が失敗する理由として何が考えられるでしょうか?
例えば、海外のサイトですが、同様のメッセージでの質問に対して、インターネットへの接続を有効にしなさいといった主旨の回答がありました。
http://www.developmentnow.com/g/18_2007_5_0_0_972348/Tcpclient-not-working-from-my-mobile.htm
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。 -
スマートフォンのアプリケーション開発なので物理的にネットワークは繋がっていない状態です。
「物理的に」と表現していましたが、ネットワークへの接続経路が何か生きているかどうかの確認と読み替えて下さい。
また、インターネットの接続はできております。
さて、「インターネットへの接続はできている」というのはどのような確認の結果でしょうか。
また、自作のアプリ以外の他のアプリケーションでは該当のメールサーバーに接続できるのでしょうか。
自作のアプリではあえて接続処理をしないといけないといった、スマートデバイスアプリケーション特有の事情はないのでしょうか。
なお、私自身はスマートデバイスアプリケーションの開発はしていませんので、外している確認事項があるかもしれません。
あしからずご了承下さい。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。 -
IPアドレスは表示されていませんでした。
とりあえず、VB.NETの開発を辞めて、下記のサイトを参考にC++で挑戦してみたいと思います。
http://social.msdn.microsoft.com/Forums/ja-JP/windowsmobileja/thread/322fee06-bf87-41ca-bddf-cb6bd2e3da3c
Azuleanさん、あんにんごさん、いろいろ力になってくれてありがとうございました。
もう少し頑張ってみます。