2013-07-26 3 views
0

У меня есть сценарий VB.NET, который создает учетные записи почты, используя smervmail webservice, я ничего не знаю о VB.Net, но у меня мало знаний о программировании. Я создал новый проект на Visual Studio 2012 и знаю, что мне нужно вызвать функцию, которая создает учетные записи в основном модуле для ее запуска, это проект консольного приложения.Функция вызова на основном модуле

Главный модуль (Module1.vb) выглядит следующим образом:

Module Module1 
     Sub Main() 
     End Sub 
End Module* 

Моя функция:

Sub fnc_CriaContas_Email_Lote() 

Это на файл cria_contas_lote.vb в том же каталоге.

Содержание cria_contas_lote.vb:

Sub fnc_CriaContas_Email_Lote() 

    Dim oPainelWS As PainelControle.svcSmarterMail 
    Dim sRetorno As String = "" 

    Try 
     'oPainelWS = New PainelControle.svcSmarterMail("xxx.xxx.xxx.xxx") 
    Catch ex As Exception 
     Console.WriteLine("Erro ao efetuar a conexão no servidor remoto: " & ex.Message) 
     Exit Sub 
    End Try 

    Dim sNomeArquivo As String = "C:\dir\emails.xlsx" 
    Dim sSQL As String = "" 

    Dim stringExcel As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sNomeArquivo & ";Extended Properties=Excel 12.0" 
    Dim oExcel As New OleDbConnection(stringExcel) 

    Try 
     oExcel.Open() 
    Catch ex As Exception 
     Console.Write("O arquivo não foi localizado ou ocorreu um erro de abertura no servidor. Arquivo: " & sNomeArquivo) 
     Console.Write(vbCrLf & "================================================") 
     Console.Write(vbCrLf & ex.Message) 
     Console.Write(vbCrLf & "================================================") 

     Exit Sub 
    End Try 

    Dim oDataSet As New DataSet 
    Try 
     Dim oExcelAdapter As New OleDbDataAdapter("select * from [contas_pop$]", oExcel) 
     oExcelAdapter.Fill(oDataSet, "conteudo") 
    Catch ex As Exception 
     Console.Write("A tabela CONTAS_POP não foi localizada. Renomeie sua WorkSheet para CONTAS_POP") 
     oExcel.Close() 
     Exit Sub 
    End Try 
    oExcel.Close() 

    Dim oDataview As DataView = oDataSet.Tables("conteudo").DefaultView 

    Dim lTotal As Long = 0 
    Dim lErro As Long = 0 
    Dim oLinha As DataRow 
    Dim iTamanhoCaixa As Integer = 1024 
    Dim sComCopia As String 

    For Each oLinha In oDataSet.Tables("conteudo").Rows 

     If Not (Trim(oLinha("conta").ToString) = "") Then 

      Console.Write("Criando [" & Trim(oLinha("conta").ToString) & "]...") 
      sRetorno = "" 
      sComCopia = Trim(oLinha("enviar_copia").ToString) 
      iTamanhoCaixa = oLinha("tamanho_mb") 

      sRetorno = CriaContaPOP(Trim(oLinha("conta").ToString), Trim(oLinha("apelidos").ToString), Trim(oLinha("password").ToString), iTamanhoCaixa, oLinha("nome").ToString, sComCopia, "admin", "password") 
      'sRetorno = oPainelWS.CriaContaPOP(oLinha("conta"), Trim(oLinha("apelidos").ToString), oLinha("senha"), iTamanhoCaixa, "", sComCopia, "", "") 
      Console.WriteLine("Retorno: " & sRetorno) 
      'If Not (sRetorno = "OK") Then 
      'Exit Sub 
      'End If 

      Threading.Thread.Sleep(100) 

     End If 

    Next 


End Sub 


Public Function CriaContaPOP(ByVal sConta As String, ByVal sApelidos As String, ByVal sSenha As String, ByVal iTamanhoCaixaKB As String, ByVal sNome As String, ByVal sForwardTo As String, ByVal sAdminUsuario As String, ByVal sAdminSenha As String) As String 


    If Not (iTamanhoCaixaKB > 1) Then 
     Return "ERRO: Tamanho da caixa postal não pode ser inferior a 1 KB" 
    End If 

    Dim aContaNome As String() = Split(sConta, "@") 
    Dim sContaNome As String = "" 
    Dim sDominio As String = "" 
    sContaNome = aContaNome(0) 
    sDominio = aContaNome(1) 

    Dim oUsuarios As New svcUserAdmin 
    Dim oUsuarioInfo As New SettingsRequestResult 
    Dim oResultado As New GenericResult 

    oResultado = oUsuarios.AddUser2(sAdminUsuario, sAdminSenha, sContaNome, sSenha, sDominio, sNome, "", False, iTamanhoCaixaKB) 
    If (oResultado.Result = False) Then 
     Return "ERRO: Não foi possivel incluir a conta de e-mail: " & oResultado.Message 
    End If 


    If Not (sForwardTo.ToString = "") Then 
     Dim arrInfo(0) As String 
     arrInfo(0) = "forwardaddress=" & sForwardTo.ToString 
     oResultado = oUsuarios.SetRequestedUserSettings(sAdminUsuario, sAdminSenha, sConta, arrInfo) 
     If (oResultado.Result = False) Then 
      Return "ERRO: Não foi possivel incluir a conta de e-mail: " & oResultado.Message 
     End If 
    End If 

    Return "OK" 

End Function 

ответ

2

Что вы пробовали? Потому что, как он стоит, это звучит, как все, что вам нужно сделать, это

Module Module1 

    Sub Main() 
     fnc_CriaContas_Email_Lote() 
    End Sub 

    Sub fnc_CriaContas_Email_Lote() 
     ' Do something. 
    End Sub 

End Module 

Если «fnc_CriaContas_Email_Lote» это класс, то вы, возможно, придется сделать что-то вроде:

Module Module1 

    Sub Main() 
     dim email as new cria_contas_lote() 

     email.fnc_CriaContas_Email_Lote() 
    End Sub 

End Module 

не видя cria_contas_lote файл его трудно знать.

Edit: Ниже, как вы можете назвать все это от всего модуля

Imports System.Data.OleDb 

Module Module1 

Sub Main() 

    fnc_CriaContas_Email_Lote() 

End Sub 

Sub fnc_CriaContas_Email_Lote() 

    Dim oPainelWS As PainelControle.svcSmarterMail 
    Dim sRetorno As String = "" 

    Try 
     'oPainelWS = New PainelControle.svcSmarterMail("xxx.xxx.xxx.xxx") 
    Catch ex As Exception 
     Console.WriteLine("Erro ao efetuar a conexão no servidor remoto: " & ex.Message) 
     Exit Sub 
    End Try 

    Dim sNomeArquivo As String = "C:\dir\emails.xlsx" 
    Dim sSQL As String = "" 

    Dim stringExcel As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sNomeArquivo & ";Extended Properties=Excel 12.0" 
    Dim oExcel As New OleDbConnection(stringExcel) 

    Try 
     oExcel.Open() 
    Catch ex As Exception 
     Console.Write("O arquivo não foi localizado ou ocorreu um erro de abertura no servidor. Arquivo: " & sNomeArquivo) 
     Console.Write(vbCrLf & "================================================") 
     Console.Write(vbCrLf & ex.Message) 
     Console.Write(vbCrLf & "================================================") 

     Exit Sub 
    End Try 

    Dim oDataSet As New DataSet 
    Try 
     Dim oExcelAdapter As New OleDbDataAdapter("select * from [contas_pop$]", oExcel) 
     oExcelAdapter.Fill(oDataSet, "conteudo") 
    Catch ex As Exception 
     Console.Write("A tabela CONTAS_POP não foi localizada. Renomeie sua WorkSheet para CONTAS_POP") 
     oExcel.Close() 
     Exit Sub 
    End Try 
    oExcel.Close() 

    Dim oDataview As DataView = oDataSet.Tables("conteudo").DefaultView 

    Dim lTotal As Long = 0 
    Dim lErro As Long = 0 
    Dim oLinha As DataRow 
    Dim iTamanhoCaixa As Integer = 1024 
    Dim sComCopia As String 

    For Each oLinha In oDataSet.Tables("conteudo").Rows 

     If Not (Trim(oLinha("conta").ToString) = "") Then 

      Console.Write("Criando [" & Trim(oLinha("conta").ToString) & "]...") 
      sRetorno = "" 
      sComCopia = Trim(oLinha("enviar_copia").ToString) 
      iTamanhoCaixa = oLinha("tamanho_mb") 

      sRetorno = CriaContaPOP(Trim(oLinha("conta").ToString), Trim(oLinha("apelidos").ToString), Trim(oLinha("password").ToString), iTamanhoCaixa, oLinha("nome").ToString, sComCopia, "admin", "password") 
      'sRetorno = oPainelWS.CriaContaPOP(oLinha("conta"), Trim(oLinha("apelidos").ToString), oLinha("senha"), iTamanhoCaixa, "", sComCopia, "", "") 
      Console.WriteLine("Retorno: " & sRetorno) 
      'If Not (sRetorno = "OK") Then 
      'Exit Sub 
      'End If 

      Threading.Thread.Sleep(100) 

     End If 

    Next 


End Sub 

Public Function CriaContaPOP(ByVal sConta As String, ByVal sApelidos As String, ByVal sSenha As String, ByVal iTamanhoCaixaKB As String, ByVal sNome As String, ByVal sForwardTo As String, ByVal sAdminUsuario As String, ByVal sAdminSenha As String) As String 


    If Not (iTamanhoCaixaKB > 1) Then 
     Return "ERRO: Tamanho da caixa postal não pode ser inferior a 1 KB" 
    End If 

    Dim aContaNome As String() = Split(sConta, "@") 
    Dim sContaNome As String = "" 
    Dim sDominio As String = "" 
    sContaNome = aContaNome(0) 
    sDominio = aContaNome(1) 

    Dim oUsuarios As New svcUserAdmin 
    Dim oUsuarioInfo As New SettingsRequestResult 
    Dim oResultado As New GenericResult 

    oResultado = oUsuarios.AddUser2(sAdminUsuario, sAdminSenha, sContaNome, sSenha, sDominio, sNome, "", False, iTamanhoCaixaKB) 
    If (oResultado.Result = False) Then 
     Return "ERRO: Não foi possivel incluir a conta de e-mail: " & oResultado.Message 
    End If 


    If Not (sForwardTo.ToString = "") Then 
     Dim arrInfo(0) As String 
     arrInfo(0) = "forwardaddress=" & sForwardTo.ToString 
     oResultado = oUsuarios.SetRequestedUserSettings(sAdminUsuario, sAdminSenha, sConta, arrInfo) 
     If (oResultado.Result = False) Then 
      Return "ERRO: Não foi possivel incluir a conta de e-mail: " & oResultado.Message 
     End If 
    End If 

    Return "OK" 

End Function 

End Module 

Ваш вопрос ваш отсутствующего следующих типов:

  • PainelControle.svcSmarterMail
  • svcUserAdmin
  • SettingsRequestResult
  • GenericResult

Они не встроены в .Net-типы и должны быть определены в другом файле. Как только вы обнаружите, что отсутствующие классы просто добавляют их в проект, и вам должно быть хорошо идти.

+0

Я хочу знать, как ссылаться на файл cria_contas_lote.vb поэтому главный модуль знает, где найти функцию fnc_CriaContas_Email_Lote. В основном все, что я хочу, - это заставить главный модуль выполнять всю функцию. –

+0

Вы имеете в виду добавить его в свой проект? Можете ли вы передать содержимое файла cria_contas_lote в вопрос? – pingoo

+0

Я был добавлен в вопрос –

0

Я думаю, что вы хотите сделать функцию SU Main run ENTIRE и НЕ ВЫХОДИТЬ в качестве подзаголовка.
Я написал ответ на ваш вопрос здесь: VB.net program with no UI

Sub Main() 
    'Write whatever you want, and add this code at the END: 
    Application.Run 
End Sub 
Смежные вопросы