我正在使用 SailThru 的 .NET 库来使用 C# 发送电子邮件。我似乎找不到向密件抄送收件人发送电子邮件的方法。
我查看了SailThru 的文档,但找不到如何在 C# 中执行此操作。
这就是我的非工作代码的样子:
SailthruClient client = new SailthruClient(apiKey, secret);
Sailthru.SailthruResponse response;
Hashtable htHashtable = new Hashtable();
htHashtable.Add("FirstName", "Alfred");
htHashtable.Add("LastName", "Neuman");
Hashtable htOptions = new Hashtable();
Hashtable htSubtable = new Hashtable();
Hashtable htBCC = new Hashtable();
htBCC.Add("Bcc", "[email protected]");
htSubtable.Add("headers", htBCC);
htOptions.Add(0, htSubtable);
response = client.Send("SampleTemplate",
"[email protected]", htHashtable,
htOptions);
使用此库添加密件抄送电子邮件收件人的适当语法是什么?
根据源代码中的.NET客户端备注,您使用的重载方法不支持通过
htOptions
发送到多个电子邮件:
请注意,htOptions 参数不允许传递电子邮件标头。要指定电子邮件标头,请使用采用 SendRequest 参数的 Send 方法。
因此,而不是
public SailthruResponse Send(
string strTemplateName,
string strEmail,
Hashtable htVars = null,
Hashtable htOptions = null)
你应该使用:
public SailthruResponse Send(SendRequest request)
您可以创建
request
对象并将其作为参数传递给 Send()
,方法如下。重要的是要输入“Bcc”,而不是“BCC”或“bcc”,如果有很多地址,请用逗号分隔它们,不带空格:
SendRequest request = new SendRequest
{
Email = "[email protected]",
Template = "SampleTemplate",
Vars = new Hashtable
{
["FirstName"] = "Alfred",
["LastName"] = "Neuman"
},
Options = new Hashtable
{
["headers"] = new Hashtable
{
["Bcc"] = "[email protected],[email protected]"
}
}
};
response = client.Send(request);
正如 @PeterB 在 comment 中所说,对于 REST API,有一个可选参数 Bcc:
密件抄送:在密件抄送中包含电子邮件地址。密件抄送必须大写。请注意,应谨慎使用密件抄送,因为某些电子邮件域会在垃圾邮件过滤器中防范密件抄送。如果包含多个地址,请用逗号分隔。
在实际的 JSON 请求中应该如下所示:
"options":{"headers":{"Bcc":"[email protected],[email protected]"}}
我使用了测试方法 Send 的修改版本(源代码此处),当构建 post 请求时,它生成了一个 JSON 对象,其属性选项的格式与 REST API 文档中指定的格式相同,因此我认为应该有效:
但是,请注意,我无法针对 SailThru API 进行实际测试,因为我没有 SailThru 帐户和发出实际请求所需的 apiKey,而且我也找不到公共测试 API。