主模块上的呼叫功能

时间:2013-07-26 14:30:56

标签: vb.net web-services visual-studio-2012

我有一个使用smartermail webservice创建邮件帐户的VB.NET脚本,我对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 个答案:

答案 0 :(得分: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文件很难知道。

编辑:以下是如何从模块中调用所有内容

    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类型的内置,必须在另一个文件中定义。一旦你找到了缺失的类,只需将它们添加到项目中,你就应该好好去。

答案 1 :(得分:0)

我认为你想让Sub Main运行ENTIRE功能,并且在执行sub main时不要退出 我在这里写了你的问题答案:VB.net program with no UI

Sub Main()
    'Write whatever you want, and add this code at the END:
    Application.Run
End Sub