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

  • 質問

  •  現在、スマートデバイスアプリケーションの開発を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月9日 10:21

すべての返信

  •  上記のサイトでは、 .NET Compact Framework 1.0以上で対応できると記述してありましたが、
    実際に実行すると「 cl.Connect("mail.myserver.com", 587) VB版」でエラーになります。

    どのようなエラーになるのでしょうか?
    エラーに関する情報を取り出せるようであれば、記述してみると回答を得やすいかもしれません。

    # 余談になりますが、「メーラー」ではなく「メールサーバー」への接続だと思います。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月9日 14:27
    モデレータ
  •  回答、ありがとうございます。
    ご指摘の部分を訂正しました。

     エラー内容は、「No connection could be made because the target machine actively refused it」となります。
    ターゲットマシンが接続を拒否したため接続ができない、という意味になります。

     同じソースでも.Net Framework上では動作します。
    現在は、エミュレーターで動作確認していますが、実機でもテストしたところ、同様の結果になりました。

     単純に、、、

                Dim cl As New TcpClient()
                cl.Connect("Localhost", 587)

     、、、とするだけでエラーになる状態です。
    数週間、ずっと悩んでいて解決できません。
    何か考えられる原因が他にあるのでしょうか?
    2009年9月10日 1:05
  •  単純に、、、

                Dim cl As New TcpClient()
                cl.Connect("Localhost", 587)

     、、、とするだけでエラーになる状態です。
    localhost の 587 番には何らかのサービスが起動しているのでしょうか?
    エラーメッセージを見る限り、localhost の 587 番で Listen されていないか、拒否されているのだと思います。

    そして、やりたいことは何でしょうか?
    TcpClient でつなぎにいくということは、そこにメール送信用のサービスが動いていることが前提になりますが、デバイスから外部のメールサーバに繋ぐことが目的でしょうか?
    それとも、デバイス内の標準で用意されているメーラにアクセスできる手段だと考えているのでしょうか?(私見ですが、localhost でメールサーバーが動いているという気はしないのですが…)


    なお、私自身は詳しくないので、誤った指摘であれば申し訳ありません。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月10日 14:30
    モデレータ
  • やりたいことは、デバイスから外部のメールサーバーに繋ぐことです。

    すみません、「cl.Connect("Localhost", 587)」は確かに不自然な記述でした。
    Locakhostの部分を該当するsmtpサーバーに設定しました。

    これも.net framework上では動く内容ですが、compact framework上では、
    下記のエラーが出てしまいます。

     A socket operation encountered a dead network

     調べても原因がわからず、また行き詰ってしまいました。
    接続が失敗する理由として何が考えられるでしょうか?

    2009年9月16日 7:17
  • 確認ですが、そのデバイスはIPアドレスやMACアドレスは持っているのでしょうか?
    また、TCP/IP通信ができることは確認済みでしょうか?

    • 編集済み anningo 2009年9月16日 8:52 一部削除
    • 回答としてマーク 質問開発者 2009年9月17日 9:15
    • 回答としてマークされていない 質問開発者 2009年9月17日 9:15
    • 回答としてマーク 高橋 春樹 2009年9月28日 9:13
    • 回答としてマークされていない 高橋 春樹 2009年9月30日 0:55
    2009年9月16日 8:51
  • これも.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
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月16日 14:14
    モデレータ
  •  返信が遅れて申し訳ありません。
    スマートフォンのアプリケーション開発なので物理的にネットワークは繋がっていない状態です。

    また、インターネットの接続はできております。
    2009年9月29日 6:24
  • 開発しているデバイスには、コマンドプロンプトが入っていないため、IPアドレスやMACアドレスの確認ができないのですが、
    どのようにすれば確認できるのでしょうか?

    ちなみにインターネットの接続、メーラーによるメール送信はできる状態です。

    2009年9月29日 6:26
  •  返信が遅れて申し訳ありません。
    現在、まだ解決できずに調査している段階で困っています。

     もう少しこちらでQ&Aを続けたいと思います。
    よろしくお願い致します。
    2009年9月29日 6:27
  • 開発しているデバイスには、コマンドプロンプトが入っていないため、IPアドレスやMACアドレスの確認ができないのですが、
    どのようにすれば確認できるのでしょうか?

    ちなみにインターネットの接続、メーラーによるメール送信はできる状態です。
    設定画面はありますか?
    設定画面に WLAN などネットワーク関連のページはありますか?
    無線LAN につながった状態だと設定画面の表示内容は変わりますか?
    2009年9月29日 8:03
  • スマートフォンのアプリケーション開発なので物理的にネットワークは繋がっていない状態です。

    また、インターネットの接続はできております。
    「物理的に」と表現していましたが、ネットワークへの接続経路が何か生きているかどうかの確認と読み替えて下さい。

    さて、「インターネットへの接続はできている」というのはどのような確認の結果でしょうか。
    また、自作のアプリ以外の他のアプリケーションでは該当のメールサーバーに接続できるのでしょうか。
    自作のアプリではあえて接続処理をしないといけないといった、スマートデバイスアプリケーション特有の事情はないのでしょうか。


    なお、私自身はスマートデバイスアプリケーションの開発はしていませんので、外している確認事項があるかもしれません。
    あしからずご了承下さい。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月29日 15:33
    モデレータ
  •  インターネットへの接続は、「Internet Explorer」よりブラウザが立ち上がり、「yahoo」のページが表示されていることを確認した結果の判断です。
    該当のメールサーバには、メーラーを利用すれば接続できますし、メールの送受信共に可能です。
    スマートデバイス特有の事情については可能性があります、少し調べてみたいと思います。
    2009年9月30日 0:47
  • 設定画面はあります。
    設定画面には、「個人用」「システム」「接続」のタブが三つあり、「接続」タブがネットワーク関連です。
    そのタブには以下の項目がありました。

     ・Bluetooth
     ・GPRS設定
     ・USB to PC
     ・Wi-Fi
     ・ドメインへの登録
     ・ビーム
     ・ワイヤレスマネージャー
     ・接続

     表示内容については、特に変わった様子はありませんでした。
    ちなみにOSは、「Windows Mobile 6.1 Professional」です。
    2009年9月30日 0:57
  • 「・ワイヤレスマネージャー」はどこのものでしょうか。
    その中あたりに IPアドレスは表示されてないですか?
    2009年9月30日 1:39
  • IPアドレスは表示されていませんでした。
    とりあえず、VB.NETの開発を辞めて、下記のサイトを参考にC++で挑戦してみたいと思います。

    http://social.msdn.microsoft.com/Forums/ja-JP/windowsmobileja/thread/322fee06-bf87-41ca-bddf-cb6bd2e3da3c

    Azuleanさん、あんにんごさん、いろいろ力になってくれてありがとうございました。
    もう少し頑張ってみます。
    2009年10月1日 1:13