2012-05-14 2 views
0

Я создал тестовый проект для отправки сообщения через google talk, используя библиотеку Jabber. Поскольку у меня уже есть тестовый проект, который может успешно отправлять сообщение с помощью agsXMPP, я хочу подражать этому проекту, чтобы вместо этого использовать библиотеку jabber. Тем не менее, сообщения не отправляются, даже несмотря на то, что команда пропустить передачу команды отправки без каких-либо ошибок. Кажется, что пароль даже не был проверен, так как он не ввел событие OnAuthError.Jabber-net Отправить сообщение (VB.NET)

Мой тестовый проект - это проект веб-приложения ASP.NET с использованием языка VB.NET. Для заполнения необходимо ввести 4 текстовых поля: учетную запись отправителя (txt_Sender), пароль отправителя (txt_Password), отправленное сообщение (txt_Message) и учетную запись получателя (txt_Receiver), а также 1 кнопку для отправки сообщения (btn_Send). Я тестирую свою учетную запись электронной почты ([email protected]) и отправляю сообщение своему другу ([email protected]). Вот мой код VB

Imports jabber 
Imports jabber.client 
Imports Microsoft.Win32 
Imports System.Threading 
Imports jabber.protocol.client 
Imports jabber.connection 

Public Class TestSendMsg 
    Inherits System.Web.UI.Page 
    Public done As ManualResetEvent 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     done = New ManualResetEvent(False) 
    End Sub 

    Private Sub btn_Send_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_Send.Click 
     Dim jcSender As JabberClient = New JabberClient() 
     Dim jidSender As New jabber.JID(txt_Sender.Text.Trim) 
     With jcSender 
      .User = jidSender.User 
      .Password = txt_Password.Text.Trim 
      .Server = jidSender.Server 
      .AutoReconnect = True 
      .AutoRoster = True 
     End With 
     With jcSender 
      Try 
       AddHandler .OnAuthenticate, New bedrock.ObjectHandler(AddressOf j_OnAuthenticate) 
       'AddHandler .OnAuthenticate, AddressOf j_OnAuthenticate 
       AddHandler .OnPresence, AddressOf j_OnPresence 
       AddHandler .OnBeforePresenceOut, AddressOf j_OnBeforePresenceOut 
       AddHandler .OnAuthError, AddressOf j_OnAuthError 
       AddHandler .OnAfterPresenceOut, AddressOf j_OnAfterPresenceOut 
       .Connect() 
       .Login() 
       .IsAuthenticated = True 
       .Message(txt_Reciever.Text.Trim, txt_Message.Text.Trim) 
      Catch ex As Exception 
       MsgBox(ex.Message) 
      End Try 
      .Close() 
      .Dispose() 
     End With 
    End Sub 

Private Sub j_OnAfterPresenceOut(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Registered: " & iq.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnAuthError(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Registered: " & iq.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnBeforePresenceOut(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Registered: " & iq.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnPresence(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Presence: " & pres.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnAuthenticate(ByVal sender As Object) 
    ' Sender is always the JabberClient. 
    Dim j As JabberClient = CType(sender, JabberClient) 
    j.Message(txt_Reciever.Text.Trim, "Test OnAuthenticate") 
    ' Finished sending. Shut down. 
    done.Set() 
End Sub 

End Class 

ответ

1

Перед отправкой сообщения вам нужно подождать OnAuthenticate.

Смежные вопросы