Un nuevo asunto. Resulta que tengo que utilizar una DLL de un SDK de un sistema administrativo. Hay unos VB Types como
Public Type tSerie
aUnidades As Double
aTipoCambio As Double
aSeries As String * kLongSeries
aPedimento As String * kLongDescripcion
aAgencia As String * kLongDescripcion
aFechaPedimento As String * kLongFecha
aNumeroLote As String * kLongDescripcion
aFechaFabricacion As String * kLongFecha
aFechaCaducidad As String * kLongFecha
End Type
Pero en .NET no hay cadenas de longitud fija. Entonces investigando, a lo que llegué es que hay que utilizar MarshalAs, así que en .NET quedaría de esta forma:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
public struct tSerie
{
public double aUnidades;
public double aTipoCambio;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongSeries)]
public byte[] aSeries;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongDescripcion)]
public byte[] aPedimento;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongDescripcion)]
public byte[] aAgencia;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongFecha)]
public byte[] aFechaPedimento;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongDescripcion)]
public byte[] aNumeroLote;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongFecha)]
public byte[] aFechaFabricacion;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constantes.kLongFecha)]
public byte[] aFechaCaducidad;
}
Así lo implementé y ya no me dio problemas. Ojalá les sea de utilidad.
jueves, 13 de mayo de 2010
viernes, 30 de abril de 2010
Uso de OpenPOP.NET
Siguiendo con las pruebas de OpenPOP.NET, les comento que sí pude hacer la conexión. Sin embargo, hay que hacer algunas modificaciones cuando el servidor utiliza SSL (como gmail):
Se abre un socket TCP normal:
clientSocket=new TcpClient();
clientSocket.Connect(strHost,intPort);
Y para habilitar SSL, hay que instanciar un stream SSL que encapsule el socket TCP
SslStream sslStream;
sslStream = new SslStream(clientSocket.GetStream(), true);
sslStream.AuthenticateAsClient(strHost);
streamFuente = (Stream)sslStream;
El método importante aquí es AuthenticateAsClient, para autentificar la petición de nuestro cliente ante el servidor de gmail (en este caso).
Y ya después de eso continuamos con un streamReader y la librería ya lo procesa.
Lo que hay que modificar es en la clase POP3Client.
Saludos
Se abre un socket TCP normal:
clientSocket=new TcpClient();
clientSocket.Connect(strHost,intPort);
Y para habilitar SSL, hay que instanciar un stream SSL que encapsule el socket TCP
SslStream sslStream;
sslStream = new SslStream(clientSocket.GetStream(), true);
sslStream.AuthenticateAsClient(strHost);
streamFuente = (Stream)sslStream;
El método importante aquí es AuthenticateAsClient, para autentificar la petición de nuestro cliente ante el servidor de gmail (en este caso).
Y ya después de eso continuamos con un streamReader y la librería ya lo procesa.
Lo que hay que modificar es en la clase POP3Client.
Saludos
Etiquetas:
asp.net correo,
correo c#,
openpop.net,
pop3 .net
miércoles, 28 de abril de 2010
OpenPOP.NET
Buscando un componente para leer correo desde una aplicación .NET, encontré esta aplicación: OpenPOP.NET . Apenas la voy a probar, a ver que tal.
Ya les contaré mis experiencias.
Saludos!
Ya les contaré mis experiencias.
Saludos!
martes, 27 de abril de 2010
Inicio
Pues he iniciado mi blog. Está pensado para comentar de diversos temas, especialmente sobre programación, tecnología, música y demás.
Saludos!!!
Saludos!!!
Suscribirse a:
Comentarios (Atom)