/* ドメインIP変換 */ pHp = gethostbyname( s_MailParam.smtpParam.cSvrName ) ; ★ ↑ 引数にはいつも会社で使用しているSMTPサーバ名を指定しています。 /*** ソケットアドレス情報の設定 ***/ memset ( (void * )&s_socAddr, 0, sizeof( s_socAddr ) ) ; /* SMTPサーバのIPアドレス、ポート番号を設定 */ s_socAddr.sin_addr.s_addr = *( unsigned int * )pHp->h_addr_list[ 0 ] ; s_socAddr.sin_port = htons( ( unsigned short )587 ) ; s_socAddr.sin_family = PF_INET ; ★ ↑ h_addr_list[ 0 ]を一度確認してみましたが、IPは正常に取れていました。 /*** ソケットの作成 ***/ s_iSds = socket( PF_INET, SOCK_STREAM, 0 ) ; if( s_iSds < 0 ) { printf( ""LOG_FORMAT "socket() Error!!! : iSts=(%d)\r\n", LOG_INFO, s_iSds ) ; return( MAIL_ERROR ) ; } /*** タイムアウトの設定 ***/ memset( &tv, 0, sizeof( tv ) ) ; tv.tv_sec = 5 ; tv.tv_usec = 0 ; iSts = setsockopt( s_iSds, SOL_SOCKET, SO_RCVTIMEO, ( char * )&tv, sizeof( tv ) ) ; if( iSts != 0 ) { printf( ""LOG_FORMAT "setsockopt( SO_RCVTIMEO ) Error!!! : iSts=(%d)\r\n", LOG_INFO, s_iSds ) ; return( MAIL_ERROR ) ; } iSts = setsockopt( s_iSds, SOL_SOCKET, SO_SNDTIMEO, ( char * )&tv, sizeof( tv ) ) ; if( iSts != 0 ) { printf( ""LOG_FORMAT "setsockopt( SO_SNDTIMEO ) Error!!! : iSts=(%d)\r\n", LOG_INFO, s_iSds ) ; return( MAIL_ERROR ) ; } /* SMTPサーバに接続 */ iSts = connect( s_iSds, ( struct sockaddr * )&s_socAddr, sizeof( s_socAddr ) ) ; if( iSts != 0 ) { printf( ""LOG_FORMAT "connect() Error!!! : iSts=(%d)\r\n", LOG_INFO, s_iSds ) ; if( h_errno == ETIMEDOUT ) { return( MAIL_CNCT_TOUT ) ; /* 接続タイムアウト */ } else { return( MAIL_CNCT_ERR ) ; /* SMTPサーバに接続できない */ ★ ↑ 現状ここに入ってきています。 connect()の戻り値iSts=6, h_errno=(Operation not permitted)となっています。 } } /* 接続メッセージの読込み */ iSts = read( s_iSds, s_RspBuf, RBUF_SIZE - 1 ) ; if( iSts == -1 ) { printf( ""LOG_FORMAT "read() Error!!! : iSts=(%d)\r\n", LOG_INFO, s_iSds ) ; return( MAIL_RSP_ERR ) ; /* 接続メッセージが読めない */ }