From: DINH V. H. <din...@fr...> - 2002-08-28 22:06:52
|
1/ imap specific usage > > mailimap * mailimap_new(size_t progr_rate, progress_function * > > progr_fun) > >=20 > > with progr_rate =3D 0 > > progr_fun =3D NULL > > (this feature is not yet functionnal) > >=20 > > int mailimap_socket_connect(mailimap * f, char * server, uint16_t > > port) > >=20 > > with the returned mailimap data structure. > >0 server is the same of the server, port is the server port. > >d=20 > > make your calls to imap >=20 > Should I call the specific imap functions, In this case, you have to call the specific imap functions. > or use the generic mailsession functions? > If the later, how do I tie the mailimap > structure with the mailsession structure? 2/ generic usage if you wish to use the generic mailsession functions, you have to connect= , for example with the following code : int tcp_connect(char * server, uint16_t port) { struct hostent * remotehost; struct sockaddr_in sa; int s; int r; s =3D socket(PF_INET, SOCK_STREAM, 0); if (s =3D=3D -1) return -1; remotehost =3D gethostbyname(server); if (remotehost =3D=3D NULL) return -1; sa.sin_family =3D AF_INET; sa.sin_port =3D htons(port); memcpy(&sa.sin_addr, remotehost->h_addr, remotehost->h_length); r =3D connect(s, (struct sockaddr *) &sa, sizeof(struct sockaddr_in)); if (r =3D=3D -1) return -1; return s; } once you get the socket, you can create a mailstream : {=20 mailstream * s; s =3D mailstream_socket_open(fd); ... } mailstream is the data structure to abstract the connection. { ... session =3D mailsession_new(imapdriver); /* or session =3D mailsession_new(imapdriver_cached); r =3D mailsession_parameters(session, IMAPDRIVER_CACHED_SET_CACHE_DIRECTORY,=20 directory_name); =20 to take advantage of a local cache */ r =3D mailsession_connect_stream(session, s); switch (r) { case MAIL_NO_ERROR_AUTHENTICATED: break; case MAIL_NO_ERROR_NON_AUTHENTICATED: break; case MAIL_NO_ERROR: break; default: printf("%s\n", maildriver_strerror(r)); break; } r =3D mailsession_login(session, folder->auth.user, folder->auth.passwd= ); ... make calls to generic interface ... mailsession_logout(session); mailsession_free(session); } --=20 DINH V. Hoa, libEtPan! - a mail library - http://libetpan.sourceforge.net "Quand tu discutes avec un chasseur, ton QI est au moins divis=E9 par 2" |