gpt4 book ai didi

java - 使用 SQL Server sp_send_dbmail 从 java 发送电子邮件

转载 作者:行者123 更新时间:2023-12-01 15:05:13 26 4
gpt4 key购买 nike

我正在尝试使用 SQL Server sp_send_dbmail 从 java 发送电子邮件

从 SQL Server 本身内部,以下内容可以很好地发送 HTML 电子邮件。 [IE。我已按照以下步骤正确设置了发送电子邮件的所有内容 Microsoft's instructions]

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'example profile',
@recipients = 'me@example.com',
@body = @tableHTML,
@body_format = 'HTML' ,
@subject = 'Email from SQL Server';

但是当尝试使用以下代码从 java 发送时

public static synchronized int sendEmail(String profileName,String recipients,String body, String body_format,String subject) {
final String sendEmailStr = "{execute msdb.dbo.sp_send_dbmail (?,?,?,?,?,?)}";
dbConn = DBConnection.getInstance();
Connection conn = dbConn.getConnection();
CallableStatement stmt = null;
int result = RESULT_FAILED;
try {
stmt = conn.prepareCall(sendEmailStr);
stmt.setString("profile_name", profileName);
stmt.setString("recipients", recipients);
stmt.setString("body", body);
stmt.setString("body_format", body_format);
stmt.setString("subject", subject);

stmt.registerOutParameter(6, java.sql.Types.INTEGER);
stmt.execute();
result = stmt.getInt(6);
} catch(SQLException e) {
System.out.println(e);
Log.getInstance().write("Exception on sendEmail " + e.toString());
} finally {
try {
stmt.close();
dbConn.returnConnection(conn);
} catch(SQLException e) {
System.out.println(e);
Log.getInstance().write("Exception on sendEmail " + e.toString());
}
}
return result;
}

我收到以下异常com.microsoft.sqlserver.jdbc.SQLServerException:com.microsoft.sqlserver.jdbc.SQLServerException:未为存储过程定义参数profile_name

我做错了什么?

最佳答案

请更改您的查询字符串以使用call,如下所示:

 final String sendEmailStr "{ call msdb.dbo.sp_send_dbmail (?,?,?,?,?,?) }";

要使用当前数据库中的存储过程,请在当前数据库中执行此命令,以通过本地过程包装 MSDB 调用:

  Use [MyDatabase]; 
CREATE PROCEDURE [MyDB].[SEND_EMAIL_DB]
@profile_name2 varchar(max),
@recipients2 varchar(max),
@body2 varchar(max),
@body_format2 varchar(max),
@subject2 varchar(max),
@p_result int OUTPUT
AS
BEGIN
exec msdb.dbo.sp_send_dbmail @profile_name=@profile_name2,
@recipients=@recipients2,@body=@body2,
@body_format=@body_format2,@subject=@subject2
END

关于java - 使用 SQL Server sp_send_dbmail 从 java 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13055162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com