|
Hello,
I created a WCF service into my asp.net app in order to store some messages into queue using MSMQ before send them to users. The first part work fine because i can see all messages in a pickup directory with Windows Explorer. I also can see the message number using windows service manager throw my private queue.
The second part don't work i.e my messages aren't sent and i have no error message. I don't understand where the problem come from. The code i use is following :
msmqQueuePath is my Queue name
Public Sub GetMailMessages() Implements ISvcEmailManagement.GetMailMessages
Try
Dim _msmqQueue As New MessageQueue(msmqQueuePath)
_msmqQueue.Formatter = New BinaryMessageFormatter
_msmqQueue.MessageReadPropertyFilter.SetAll()
AddHandler _msmqQueue.ReceiveCompleted, AddressOf msmqQueue_ReceiveCompleted
Dim returnValue As IAsyncResult
returnValue = _msmqQueue.BeginReceive()
signal.WaitOne()
Return
Catch ex As Exception
Dim Msg As String = ex.Message
Throw ex
End Try
End Sub
The receiveCompleted function is :
Public Sub msmqQueue_ReceiveCompleted(ByVal sender As Object, ByVal e As ReceiveCompletedEventArgs)
Try
Dim emailMsg As EmailEntities.CEmailMessage = e.Message.Body
Dim mailMessage As MailMessage = New MailMessage()
mailMessage.To.Add(New MailAddress(emailMsg.sTO))
mailMessage.From = New MailAddress(emailMsg.sFROM)
mailMessage.Subject = emailMsg.sSUBJECT
mailMessage.Body = emailMsg.sBODY
Dim oclient As SmtpClient = New SmtpClient()
Try
oclient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
oclient.Send(mailMessage)
Catch ex As SmtpFailedRecipientsException
Dim i As Integer
For i = 0 To ex.InnerExceptions.Length - 1
Dim status As SmtpStatusCode = ex.InnerExceptions(i).StatusCode
If (status = SmtpStatusCode.MailboxBusy) Or (status = SmtpStatusCode.MailboxUnavailable) Then
System.Threading.Thread.Sleep(5000)
oclient.Send(mailMessage)
Else
MsgBox("Failed to deliver message to {0}", MsgBoxStyle.Information, ex.InnerExceptions(i).FailedRecipient)
End If
Next i
Catch ex As SmtpException
Dim msstatus As String = ex.Message
End Try
Catch ex As SmtpException
Dim msstatus As String = ex.Message
Catch ex As Exception
Dim msstatus As String = ex.Message
End Try
End Sub
Thanks a lot for any help
|
|
|
|