我有一个使用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
答案 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
您的问题是您缺少以下类型:
这些不是.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