-4

値はストアドプロシージャEmailTOとの間で受け渡されず、NULLを示します。EmailFromそのため、メールを送信できません。の代わりに手動で電子メールアドレスを入力するToFrom、電子メールはSMTP形式で送信されますが、ストアドプロシージャから読み取られません。

値を取得するのを手伝ってください:

これは私のストアドプロシージャであり、データはテーブルに格納されます。

    Set @EmailFrom =(SELECT EmailFrom FROM tblEmailDesign where EmailID = @EmailID )
    Set @EmailTo =(SELECT EmailTo FROM tblEmailDesign where EmailId = @EmailID )

    Insert into tblEmailsend([EmailID][EmailSubject],[EmailTo],[EmailFrom],[EmailBody],[EmailComment])
select @EmailID @EmailFrom,@EmailTo,[EmailSubject],[EmailBody],@EmailComment from tblEmaildesign
where EmailID=@EmailID

END

これはC#での私の呼び出しコードです:

protected void submit(object sender, EventArgs e)

        SqlParameter EmailTo = new SqlParameter("@EmailTo", SqlDbType.NVarChar, 200);
        EmailTo.Direction = ParameterDirection.Output;
        scom.Parameters.Add(EmailTo);

        SqlParameter EmailFrom = new SqlParameter("@EmailFrom", SqlDbType.NVarChar, 200);
        EmailFrom.Direction = ParameterDirection.Output;
        string To = EmailTo;

        String FRom = EmailFrom;
        scom.Parameters.Add(EmailFrom);

        mail message = new mail();

        mailsystem.Esendmail(To,From);

        try {
            scom.Connection.Open();
            scom.ExecuteNonQuery();
            scom.ExecuteReader(CommandBehavior.CloseConnection);
        } finally {
            scom.Connection.Close();
        }
    }
}
4

1 に答える 1

0

実行後、ストアドプロシージャから出力パラメータ値を取得する必要があります。

protected void submit(object sender, EventArgs e)

    using (SqlCommand scom = new SqlCommand("spx_Send_Status_Mail", new SqlConnection(ConfigurationManager.ConnectionStrings["EPOCHSConnectionString"].ConnectionString))) {

        scom.CommandType =CommandType.StoredProcedure;    
        SqlParameter EmailTo = new SqlParameter("@EmailTo", SqlDbType.NVarChar, 200);
        EmailTo.Direction = ParameterDirection.Output;
        scom.Parameters.Add(EmailTo);    
        SqlParameter EmailFrom = new SqlParameter("@EmailFrom", SqlDbType.NVarChar, 200);
        EmailFrom.Direction = ParameterDirection.Output;
        scom.Parameters.Add(EmailFrom);

        try {
            scom.Connection.Open();
            scom.ExecuteNonQuery();
            scom.ExecuteReader(CommandBehavior.CloseConnection);
        } finally {
            scom.Connection.Close();
        }

        mail message = new mail();

        //Get output parameters after executing query
        string to = EmailTo.Value.ToString();
        string from = EmailFrom.Value.ToString();
        //Pass To and From email addresses to the ESendmail function
        mailsystem.Esendmail(to,from);
    }
}
于 2012-07-16T06:10:26.773 に答える