La Web del Programador: Comunidad de Programadores
 
    Pregunta:  13529 - CORREO... CON MAPI
Autor:  Manuel Castro Vera
El problema es el sgt: Tengo un modulo que manda correos desde una base de datos. Este modulo al crear los correos muy bien, tanto asi que los genera en la bandeja de salida del MS Outlook, pero aparte de de poner los datos en los respectivos campo: a quien, titulo, cuerpo, atachado..etc Al ver el mensaje de correo creado cuando trato de ver el correo hacia quien va dirigido me sale un campo de TIPO DE CORREO con el correo de destinatario. El problema es que yo en ningun momento pongo este dato en ese campo, ni siquiera existe este campo en la MAPI. Cuando hice un correo desde el MS Outlook este campo tenia el valor de SMTP, el cual si enviava este correo.
Este modulo me funciona bien en las plataformas W98 con MS Outlook 2000; W2000 con Outlook express... pero en el W2000 con MS Outlook con Exchange me sale este problema.

Quisiera saber si hay que configurar algo para que este problema no suceda.

  Respuesta:  ARTURO LORCA
AQUI ESTA LA SOLUCION:
Function digito(CadenA As String) As Boolean
On Error GoTo BSS_ErrorHandler

If CadenA <> Empty And Val(CadenA) <> 0 Then

For I = 1 To Len(CadenA)
If (Mid(CadenA, I, 1)) = "-" Or (Mid(CadenA, I, 1)) = "." Then
Else
CadenaLimpiA = CadenaLimpiA + Mid(CadenA, I, 1)
End If
Next

CadenA = CadenaLimpiA
DiG = (Mid(CadenaLimpiA, (Len(CadenaLimpiA)), 1))
If Asc(DiG) <= 47 Or Asc(DiG) >= 58 Then
If DiG = "K" Or DiG = "k" Then
DiG = "10"
Else
DiG = "12"
End If
End If

CadenaLimpiA = Empty

For I = 1 To (Len(CadenA) - 1)
CadenaLimpiA = CadenaLimpiA + (Mid(CadenA, I, 1))
Next

CadenA = Empty
I = Empty
I = (Len(CadenaLimpiA))
Z = 2
While I <> 0
If Z <> 8 Then
CadenA = Val(CadenA) + (Val((Mid(CadenaLimpiA, I, 1))) * Z)
Z = Z + 1
Else
Z = 2
CadenA = Val(CadenA) + (Val((Mid(CadenaLimpiA, I, 1))) * Z)
Z = Z + 1
End If
I = I - 1
Wend

Z = 11 - (Val(CadenA) - Int((Val(CadenA)) / 11) * 11)

XXXX = Asc(DiG)
If DiG = 0 And Z = 11 Then
digito = True
Else
If Z = DiG Then
digito = True
Else
digito = False
End If
End If
Else
digito = False
End If
CadenA = Empty
CadenaLimpiA = Empty

Exit Function

BSS_ErrorHandler:

If Err.Number > 0 Then ProjectErrorHandler "(Form) frmprofesor::Function digito"
Resume Next
End Function