全部產品
Search
文件中心

Direct Mail:C#語言SDK發送長內容時,報錯“Invalid URI: The Uri string is too long”

更新時間:Aug 01, 2025

問題情境

C#語言SDK發送長內容時,報錯“Invalid URI: The Uri string is too long”。

解決方案

登入阿里雲openAPI產生調試代碼。

開啟“Common模式產生樣本“開關,並填寫參數。

image

擷取到代碼後,需要將URL傳參改為Body傳參。

請參考截圖,兩處重點改動:

image

修改後代碼:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;


namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {

        /**
         * 使用AK&SK初始化帳號Client
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.OpenApiClient.Client CreateClient()
        {
            // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。
            // 建議使用更安全的 STS 方式,參考下方相關文檔。
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
                AccessKeyId = "xxxxxx",
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                AccessKeySecret = "xxxxxx",
            };
            // Endpoint 請參考相關文檔
            config.Endpoint = "dm.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        /**
         * API 相關
         * @param path params
         * @return OpenApi.Params
         */
        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.Params
            {
                // 介面名稱
                Action = "SingleSendMail",
                // 介面版本
                Version = "2015-11-23",
                // 介面協議
                Protocol = "HTTPS",
                // 介面 HTTP 方法
                Method = "POST",
                AuthType = "AK",
                Style = "RPC",
                // 介面 PATH
                Pathname = "/",
                // 介面請求體內容格式
                ReqBodyType = "formdata",
                // 介面響應體內容格式
                BodyType = "json",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.OpenApiClient.Client client = CreateClient();
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();
            // query params
            Dictionary<string, object> queries = new Dictionary<string, object>() { };
            queries["AccountName"] = "xxxxxx";
            queries["AddressType"] = 1;
            queries["ReplyToAddress"] = false;
            queries["ToAddress"] = "xxxxxx";
            queries["Subject"] = "test2";
            queries["HtmlBody"] = "test長內容";
            // runtime options
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Body = queries,
            };
            // 複製代碼運行請自行列印 API 的傳回值
            // 傳回值為 Map 類型,可從 Map 中獲得三類資料:響應體 body、回應標頭 headers、HTTP 返回的狀態代碼 statusCode。
            client.CallApi(params_, request, runtime);
        }


    }
}

相關文檔:

管理訪問憑證

服務存取點