Я использую Sendgrid и пытаюсь отправить эти письма на язык C#. Итак, что я делаю, это настройка SMTP и API-ключей в моих приложениях, а также бум, туда отправляются электронные письма.Sendgrid отказаться от подписки предпочтения
Вопрос в том, как вставить Отменить подписку Настройки в моем заголовке X-SMTPAPI? FYI, предпочтения отписки, где вы можете выбрать, какую группу вы хотите отменить, вместо глобальной отписки.
Я уже проверил эти ссылки:
- https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/groups.html
- https://sendgrid.com/docs/API_Reference/Web_API_v3/How_To_Use_The_Web_API_v3/requests.html
- https://sendgrid.com/docs/API_Reference/SMTP_API/suppressions.html
Я также проверил библиотеку C# на их GitHub. Но никто из них не дал мне понять.
Я полностью слеп с JSON, GET, REQUEST, RESPONSE и т. Д.
это мой C# код
public void Main()
{
string sSubject = Dts.Variables["vSubject"].Value.ToString();
string sBody = Dts.Variables["vBodyMessage"].Value.ToString();
int iPriority = 2;
if (SendMail(sSubject, sBody, iPriority))
{
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
//Fails the Task
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
//THIS IS THE HEADER X-SMTPAPI, I DUNNO HOW TO USE IT :(
//I WANNA ADD MY GROUPS HERE
private static string XsmtpapiHeaderAsJson()
{
var header = new Header();
header.SetAsmGroupId(777);
//var uniqueArgs = new string[] { "Small", "Medium", "Large" };
//{
// "asm_groups_to_display": [1, 2, 3]
//};
//header.AddUniqueArgs({ "asm_groups_to_display": ['1', '2', '3']});
//var subs = new List<String> { "私はラーメンが大好き" };
//header.AddSubstitution("%tag%", subs);
//dynamic stuff = json
return header.JsonString();
}
public bool SendMail(string sSubject, string sMessage, int iPriority)
{
string xmstpapiJson = XsmtpapiHeaderAsJson();
try
{
string sEmailServer = Dts.Variables["sServer"].Value.ToString();
string sEmailPort = Dts.Variables["sPort"].Value.ToString();
string sEmailUser = Dts.Variables["sUser"].Value.ToString();
string sEmailPassword = Dts.Variables["sPassword"].Value.ToString();
string sEmailSendTo = Dts.Variables["sSendTo"].Value.ToString();
string sEmailSendToName = Dts.Variables["sSendToName"].Value.ToString();
//string sEmailSendCC = Dts.Variables["sSendCC"].Value.ToString();
string sEmailSendFrom = Dts.Variables["sFrom"].Value.ToString();
string sEmailSendFromName = Dts.Variables["sFromName"].Value.ToString();
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress(sEmailSendFrom, sEmailSendFromName);
//You can have multiple emails separated by ;
string[] sEmailTo = Regex.Split(sEmailSendTo, ";");
//string[] sEmailCC = Regex.Split(sEmailSendCC, ";");
int sEmailServerSMTP = int.Parse(sEmailPort);
smtpClient.Host = sEmailServer;
smtpClient.Port = sEmailServerSMTP;
System.Net.NetworkCredential myCredentials =
new System.Net.NetworkCredential(sEmailUser, sEmailPassword);
smtpClient.Credentials = myCredentials;
message.From = fromAddress;
//MailAddress toAddress = new MailAddress(sEmailSendTo, sEmailSendToName);
//message.To.Add(toAddress);
if (sEmailTo != null)
{
for (int i = 0; i < sEmailTo.Length; ++i)
{
if (sEmailTo[i] != null && sEmailTo[i] != "")
{
MailAddress toAddress = new MailAddress(sEmailTo[i], sEmailSendToName);
message.To.Add(toAddress);
}
}
}
switch (iPriority)
{
case 1:
message.Priority = MailPriority.High;
break;
case 3:
message.Priority = MailPriority.Low;
break;
default:
message.Priority = MailPriority.Normal;
break;
}
//message.Headers.Add("X-SMTPAPI", xmstpapiJson);
//smtpClient.SendCompleted += SendCompletedCallback;
//const string state = "test1";
message.Subject = sSubject;
message.IsBodyHtml = true;
message.Body = sMessage;
//smtpClient.SendAsync(message, state);
smtpClient.Send(message);
return true;
}
catch (Exception ex)
{
return false;
}
}
hmm ..кажется, ваша проблема действительно касается «Я полностью слеп с JSON, GET, REQUEST, RESPONSE и т. д.». Без обид, но для решения этого сценария это не будет. Соответствующая документация является достаточной. Сказав это, ссылочная документация не относится к экземпляру экземпляра .NET 'SmtpClient' или использованию. Что такое 'header' в статическом методе с именем' XsmtpapiHeaderAsJson'? –
Привет, Брет, спасибо за ваш ответ. Я стараюсь понять JSON GET и т. Д., Но без какого-либо более простого примера/учебника я не мог понять, как это происходит. И, да, XsmtpapiHeaderAsJson - это мой заголовок, поэтому я надеялся, что он сможет хранить мои группы там, и я просто добавляюHeader или что-то в этом в SendMail там. –
Концепция подчеркивания API RESTful заключается в том, что он опирается на спецификацию http (это другой протокол для smtp), поэтому «заголовок», на который он ссылается, является заголовком HTTP-запроса (поиск типа HttpRequest в .NET). Я уверен, что SmtpClient, который вы инициализируете здесь, не устанавливает соединение по http, не говоря уже о RESTFul. вероятно, отправит SOAP-пакеты на Почтовый сервер после установления соединения на порте 25 с помощью smtp (если бы мы отображали соединение как url, это было бы «smtp: // SERVERNAME: 25') –