0

私は、smartermail Web サービスを使用してメール アカウントを作成する 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
4

2 に答える 2

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
  • 設定リクエスト結果
  • GenericResult

これらは .Net 型に組み込まれておらず、別のファイルで定義する必要があります。不足しているクラスが見つかったら、それらをプロジェクトに追加するだけで準備完了です。

于 2013-07-26T14:36:39.163 に答える
0

Sub Main が ENTIRE 関数を実行するようにしたいと思います。sub main が実行されると、DON'T EXIT が実行されます。
ここにあなたの質問の答えを書きました:UIのない​​VB.netプログラム

Sub Main()
    'Write whatever you want, and add this code at the END:
    Application.Run
End Sub
于 2013-07-28T10:53:44.927 に答える