jueves, 9 de agosto de 2012

el proceso no puede obtener acceso al archivo porque está siendo utilizado en otro proceso


el proceso no puede obtener acceso al archivo porque está siendo utilizado en otro proceso vb.net
el proceso no puede obtener acceso al archivo porque está siendo utilizado en otro proceso vb.net
La función que adjunta el fichero, lo deja abierto. No se porque, pero es así.
La idea general es crear el fichero en memoria y adjuntar ese fichero en memoria con el nombre que quieras.
Esta clase lo hace:
Imports System.Net.Mail
Imports System.Text
Imports System.Net
Public Class FrmEmail
Public Shared Function SendEMail(ByVal strOrigen As String, ByVal strDestinatario As String, ByVal strAsunto As String, ByVal strMsg As String, ByVal usuario As String, ByVal Clave As String, ByVal smtp As String, ByVal Adjunto As String) As Boolean
Dim msg As New MailMessage()
msg.[To].Add(New MailAddress(strDestinatario))
msg.From = New MailAddress(strOrigen)
msg.Subject = strAsunto
msg.Body = strMsg
‘Adjuntar fichero. No se puede ajuntar el fichero tal cual, pues se queda bloqueado.
Dim contentAsBytes As Byte() = Encoding.UTF8.GetBytes(Adjunto)
Dim memStream As System.IO.MemoryStream = New System.IO.MemoryStream(contentAsBytes)
Dim streamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(memStream)
streamWriter.Flush()
memStream.Position = 0
Dim thisAttachment As Attachment = New Attachment(memStream, vbNull) ‘ “image/jpeg”)
Dim F As Long
Dim FileNameAdjunto As String
F = InStrRev(Adjunto, “\”)
If F = 0 Then
FileNameAdjunto = Adjunto
Else
FileNameAdjunto = Adjunto.Substring(F)
End If
thisAttachment.ContentDisposition.FileName = FileNameAdjunto
msg.Attachments.Add(thisAttachment)
‘msg.Attachments.GetEnumerator()
Dim clienteSmtp As New SmtpClient(smtp)
clienteSmtp.Credentials = New NetworkCredential(usuario, Clave)
Try
clienteSmtp.Send(msg)
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
End Class

No hay comentarios:

Publicar un comentario