Good afternoon, I just developed a project using this code and worked without any problem:
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Cmd As ADODB.Command
Dim strconnect As String
strconnect = "Provider=SQLOLEDB;Data Source=SERVERNAME\INSTANCENAME,PORTNUMBER;Initial Catalog=DATABASENAME"
con.Open strconnect, "sa", "SAPASSWORD"
Set Cmd = New ADODB.Command
Cmd.ActiveConnection = con
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "msdb.dbo.sp_send_dbmail"
Cmd.NamedParameters = True
MORE CODE.....
Cmd.Parameters.Append Cmd.CreateParameter("@profile_name", adVarChar, adParamInput, 50, "PROFILENAME")
Cmd.Parameters.Append Cmd.CreateParameter("@recipients", adVarChar, adParamInput, 200, "EMAIL@ADDRESS.XXX")
Cmd.Parameters.Append Cmd.CreateParameter("@subject", adVarChar, adParamInput, 200, "SUBJECT TEXT")
Cmd.Parameters.Append Cmd.CreateParameter("@body", adVarChar, adParamInput, 1800, "MESSAGE BODY TEXT")
Set rs = Cmd.Execute
I used variables for EMAIL@ADDRESS.XXX, SUBJECT TEXT and MESSAGE BODY TEXT and numbers (200, 200 and 1800) are the max length for every one of mentioned fields, if the field exceeds that length you will get an error.