Creo que la pregunta viene por el lado de que enviar el mismo correo individualmente a varios destinatarios de una lista es mucho mas lento que enviar el correo solo una vez a multiples destinatarios. CDO es muy bueno, pero hay que reconocer que puede ser bastante lento para procesar la llamada a Send().
Ahora, definitivamente VFP tiene un limite para el tamano de una variable tipo string, pero no es 254 sino
16,777,184 (tomado de aqui)., asi que con esa capacidad son muchas las direcciones que puedes acomodar. Ahora, otra cosa es cual es el tamano maximo que puede tener la propiedad To de la clase CDOMessage. Lamentablemente no pude conseguir ninguna referencia en Google sobre elsto, sin embargo si consegui un articulo donde explicaban las multiples razones por las que hacer spam no es buena idea.
Dicho esto, creo que lo primero que tienes que decidir es si quieres seguir con la idea de enviar un unico correo a muchos destinatarios o si mejor envias el mismo correo a cada destinatario individualmente. Si decides ir por la primera opcion, entonces te recomendaria lo siguiente:
a) Haz una primera version que envie el correo de una sola vez a todos los destinatarios, asegurandote que tu programa te avise visualmente el tamano total en caracteres y el numero total de direcciones incluidas en la variable string que contiene la lista de destinatarios. La idea de esto es tener un limite de string y direcciones que sabes funcionara bien.
b) Modifica tu rutina para preparar el objeto CDOMessage con todos los datos a excepcion de la propiedad To
c) Luego inicia un ciclo que recorra todos los destinatarios uno por uno
d) Verifica si el valor actual de cTo + la direccion del destinatario actual supera en longitud o numero de direcciones al limite establecido en el punto a). Si no es asi, incluye la direccion en cTo, pasa al siguiente registro en la lista y repite este paso.
e) Si el valor actual de cTo + la direccion de destinoatario actual suipera en longitud o numero de direcciones al limite establecido en el punto a), asignas el valor de cTo a la propiedad To del mensaje e invocas a Send(). Una vez hecho hesto, haces cTo = "", pasas al siguiente destinatario y repites el paso d).
f) Una vez recorrida toda la lista de destinatarios, verifica si cTo esta vacia. Si no es asi, asigna cTo a la propiedad To dle mensaje e invoca a Send().
Lo que buscas aqui es, primero determinar la cantidad de correos que puedes enviar con CDO sin problemas,(llamemoslo n), para luego enviar un correo cada "n" direcciones, es decir, si puedes enviar 20 correos simultaneamente sin problemas, y tienes 50 destinatarios, enviarias el correo 3 veces; dos veces con 20 destinatarios y uno final con 10.
Saludos
Victor Espina