Если под работой вы подразумеваете открытый, вы можете просто подключиться к порту и посмотреть, будет ли сокет успешно открыт.
Если вы имеете в виду, что он принимает действительный SMTP через SSL, то вам понадобится библиотека, которая подключается и запускает тривиальную команду SMTP, например HELO или что-то в этом роде.
Chilkat имеет библиотечный код и примеры для этого.
Пример кода подключения для win32:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <wspiapi.h>
void tryconnect(const char * host, const char * port)
{
SOCKET Socket = INVALID_SOCKET;
struct addrinfo *resAddrInfo = NULL;
struct addrinfo *ptr = NULL;
struct addrinfo hints;
int result = 0;
printf("Connecting to %s:%s\n", host, port);
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
result = getaddrinfo(host, port, &hints, &resAddrInfo);
if (result != 0)
{
printError("getaddrinfo failed");
return;
}
ptr = resAddrInfo;
Socket = WSASocket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
if (Socket == INVALID_SOCKET)
{
printError("Error Creating Socket");
freeaddrinfo(resAddrInfo);
return;
}
result = WSAConnect(Socket, ptr->ai_addr, (int)ptr->ai_addrlen, NULL, NULL, NULL, NULL);
if (result != 0)
{
printError("Error Connecting");
closesocket(Socket);
freeaddrinfo(resAddrInfo);
return;
}
freeaddrinfo(resAddrInfo);
printf("Success!\n\n");
}