大家好!
我在调用sp_send_dbmail时,提示"必须至少指定以下参数之一"!!,如下图:可是我已经将Body和Subject指定了内容,为什么还是报这样的错?!
请高手指点,感激不尽!
Dim cnn1  As ADODB.Connection
Dim cmd     As ADODB.Command
Dim rs1     As ADODB.Recordset
Dim par As ADODB.Parameter
Dim ConnStr     As String
Dim EmailAddress As String
Dim EmailSubject As String
Dim EmailBody As StringConnStr = "Provider=SQLOLEDB.1;Password=inplan;Persist Security Info=True;User ID= inplan ;Initial Catalog=live;Data Source=ERPDB01"Set cnn1 = New ADODB.Connection
cnn1.Open ConnStrSet rs1 = New ADODB.Recordset
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn1
cmd.CommandText = "msdb.dbo.sp_send_dbmail"
cmd.CommandType = adCmdStoredProcEmailAddress = "[email protected];[email protected]"
EmailBody = "测试Body"
EmailSubject = "测试Subject"Set par = cmd.CreateParameter("@profile_name", adVarChar, adParamInput, 50, "DBA SQL")
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@recipients", adVarChar, adParamInput, Len(EmailAddress), EmailAddress)
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@body", adVarWChar, adParamInput, Len(EmailBody), EmailBody)
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@subject", adVarWChar, adParamInput, Len(EmailSubject), EmailSubject)
cmd.Parameters.Append parSet rs1 = cmd.Execute
Set cmd = Nothing
Set rs1 = Nothing

解决方案 »

  1.   

    缺少个参数吧
    至少没有发信人的EMAIL
      

  2.   

    只有你一个人回答呢,分只能给你了
    问题已经解决了
    在VB中,parameter必须按顺序来赋值,
    我将代码改动如下Set par = cmd.CreateParameter("@profile_name", adVarChar, adParamInput, 50, "DBA SQL")
    cmd.Parameters.Append parSet par = cmd.CreateParameter("@recipients", adVarChar, adParamInput, Len(EmailAddress), EmailAddress)
    cmd.Parameters.Append parSet par = cmd.CreateParameter("@copy_recipients", adVarChar, adParamInput, 100, "null")
    cmd.Parameters.Append parSet par = cmd.CreateParameter("@blind_copy_recipients", adVarChar, adParamInput, 100, "null")
    cmd.Parameters.Append parSet par = cmd.CreateParameter("@subject", adVarWChar, adParamInput, Len(EmailSubject), EmailSubject)
    cmd.Parameters.Append parSet par = cmd.CreateParameter("@body", adVarWChar, adParamInput, Len(EmailBody), EmailBody)
    cmd.Parameters.Append par如上代码,严格按照sp_send_dbmail中的parameter顺序来赋值,
    举个例子,如果我将以上代码的第5个parameter和第6个换个位置,那么,
    发送的邮件中,主题和内容,就完全对调了!与参数的名称无关!只与参数
    的顺序有关。
    就算我将6个参数名称都写为"@subject",但是仅当它出现在第5个位置时,
    才表示主题,出现在第6个位置时,则表示的是@body。