Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Arduino(mailの人)

Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

#1

投稿記事 by Arduino(mailの人) » 12年前

http://uni.2ch.net/test/read.cgi/denki/1381233968/
ここの612で質問をしているものですが、解決方法が見つからず途方にくれているためここに質問しました。
2chとのマルチポストが認められてない場合は、注意してくださるようお願いします。

問題の内容なのですが、arduino ethernet r3 を使いGmailにアクセスしたく、
http://www.e-risingstar.com/wordpress/?p=272
のサイトを参考に

コード:

 
#include <Ethernet.h>
#include <SPI.h>
 

 byte mac[] = { 0x??, 0x??, 0x??, 0x??, 0x??, 0x?? };
 byte ip[] = { 192,168,??,?? };     // Arduino EtherShield IP address
 byte d_dns[] = { 192,168,??,?? };  // Default DNS server address
 byte gateway[] = { 192,168,??,?? };  // Default Gateway IP address
 byte subnet[] = { 255, 255, 255, 0 };  // Subnet Mask
 
 byte server[] = { 173,194,79,108 };    // Gmail POP3 server address
// byte server[] = { 114,111,79,140 };    // Yahoomail POP3 server address
 
 EthernetClient client;
 long updateTimer;
 boolean clientConnected = false;

void setup()
{
   Serial.begin(9600);
}
 
void loop()
{
  if ((millis() - updateTimer) > 10000)
  {
    Ethernet.begin(mac, ip ,d_dns ,gateway ,subnet); 
    
    delay(1000);
 
    Serial.println("connecting...");
 
    if (client.connect(server, 995))        //POP3 port 995
    {  
       
       Serial.println("connected");
       delay(1000); 
       Serial.println(client.connected()); 
      
       client.println("user ***********@gmail.com");//Yahooの際は@以下省略
       delay(1000);
       Serial.println("user");
       Serial.println(client.connected()); 
       
       client.println("pass *********");
       delay(1000); 
       Serial.println("pass");
       Serial.println(client.connected());
       
       client.println("stat");
       delay(1000); 
       Serial.println("stat");
       Serial.println(client.connected());
       
       client.println("retr 1");
       delay(1000); 
       Serial.println("retr");
       Serial.println(client.connected());
       
       client.println("QUIT"); 
       Serial.println("QUIT");
       Serial.println(client.connected());
       clientConnected = true;       
                                                
     } else {
       Serial.println("connection failed");
     }
     updateTimer = millis();
  }

  if (clientConnected)
  {
     if (client.available()) 
     {                    
       char c = client.read();                
       Serial.print(c);                        
      }

      if (!client.connected())
      {
      Serial.println("disconnecting.");
      client.stop();
      clientConnected = false;
     }  
   } 
}
 
このコードでやったところ

コード:

connecting...
connected
1
user
0
pass
0
stat
0
retr
0
QUIT
0
disconnecting.
としか表示されません、普通サーバーに接続した時点で返答が有り何も出力されないのはおかしいと思われます。
この現象の対処方法をご存じの方はどうか教えてもらえないでしょうか。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

#2

投稿記事 by みけCAT » 12年前

Arduino(mailの人) さんが書きました: http://uni.2ch.net/test/read.cgi/denki/1381233968/
ここの612で質問をしているものですが、解決方法が見つからず途方にくれているためここに質問しました。
2chとのマルチポストが認められてない場合は、注意してくださるようお願いします。
マルチポストをする際は相互リンクが必要なので、2ch→このサイトにリンクを張ってください。

以下の点が怪しいと思います。
・nslookupで確認したところ、GmailのPOP3サーバーであるpop.gmail.comのIPアドレスは
 74.125.129.109または74.125.129.108であり、173.194.79.108ではないようです。
・Gmailの場合、SSLで接続することが必要かもしれません。

IMAP と POP3 の開始方法 - Gmail ヘルプ
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Arduino(mailの人)

Re: Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

#3

投稿記事 by Arduino(mailの人) » 12年前

みけCAT さん返信有難うございます。
すみません、2chへURLを貼ることを忘れていました。

自分もSSLで接続しなければならないとはわかっているのですが、何も出力されないのはおかしいと思い、
SSL以前の問題ではないかと思っています。
http://blogs.yahoo.co.jp/d061333/28391448.html
このサイトを見る限り、SSLで接続しなくてもサーバーとのやりとりはできそうなんですけども、上手く行きません。
yahooの方も試してみましたけども、結果は同じでした。
みけCAT さんが書きました: ・nslookupで確認したところ、GmailのPOP3サーバーであるpop.gmail.comのIPアドレスは
 74.125.129.109または74.125.129.108であり、173.194.79.108ではないようです。
コードを変更してみたのですが結果は変わらずです。
サーバーにアクセスはできているのですが、その時点でtelnetみたく返答は来るはずですなんですが、来ないのです・・・・

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

#4

投稿記事 by みけCAT » 12年前

Arduino(mailの人) さんが書きました:yahooの方も試してみましたけども、結果は同じでした。
ポート番号は変えましたか?
SSLを使用しない場合のPOP3の(標準)ポートは110です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

#5

投稿記事 by みけCAT » 12年前

サーバーにアクセスはできているのですが、その時点でtelnetみたく返答は来るはずですなんですが、来ないのです・・・・
pop.gmail.comの995番ポートにtelnetでアクセスしてみましたが、何も受信しませんでした。
念のためPerlのプログラムでもテストしましたが、何も受信できませんでした。

コード:

#!/usr/bin/perl

$addr = (gethostbyname("pop.gmail.com"))[4];
$name = pack("S n a4 x8", 2, 995, $addr);

socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(STDOUT);
binmode(STDOUT);
while (<S>) { print; }
close(S);
SSL の解説
ここによると、SSLでは最初にクライアントがClientHelloというものを送るらしいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Arduino(mailの人)

Re: Arduino を使ったGmailの接続及び公共POP3サーバーへの接続について

#6

投稿記事 by Arduino(mailの人) » 12年前

みけCATさん、返信およびご指摘ありがとうございました。
みけCAT さんが書きました: SSLを使用しない場合のPOP3の(標準)ポートは110です。
このおかげで何とかyahooメールはいけました。
gmailの方は諦めます・・・
本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る