Ich benutze Sendgrid und versuche, diese E-Mails mit C# Sprache zu senden. Also, was ich tue, ist die SMTP und API Keys in meinen Apps zu konfigurieren, und Boom, da gehen die E-Mails gesendet.Sendgrid unsubscribe Einstellungen
Die Frage ist, wie füge ich die Abbestellen Einstellungen Gruppe in meinem X-SMTPAPI-Header ein? FYI, Abmelden-Einstellungen ist, wo Sie wählen können, welche Gruppe Sie abmelden möchten statt globale Abbestellen.
Ich habe bereits diese Links:
- 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
ich die Bibliothek C# auf ihre Github ebenfalls geprüft. Aber keiner von diesen ist mir klar.
Ich bin völlig blind mit JSON, GET, Request, RESPONSE und so.
das ist mein C# -Code
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 ..scheint Ihr Problem ist wirklich in Bezug auf "Ich bin völlig blind mit JSON, GET, REQUEST, RESPONSE und so". Nichts für ungut, aber eine Lösung für dieses Szenario wird das nicht angehen. Die Dokumentation, auf die Sie verwiesen haben, ist ausreichend. Allerdings steht die referenzierte Dokumentation nicht im Zusammenhang mit dieser Instanz oder Verwendung dieses .NET-SmtpClient-Typs. Was ist 'header' in der statischen Methode namens' XsmtpapiHeaderAsJson'? –
Hallo Brett, danke für deine Antwort. Ich versuche mein Bestes, JSON GET usw. zu verstehen, aber ohne ein einfacheres Beispiel/Tutorial, konnte ich nicht sehen, wie es geht. Und, ja, XsmtpapiHeaderAsJson ist meine Kopfzeile, also hatte ich gehofft, dass es meine Gruppen dort drin speichern könnte, und ich addiere einfach Header oder etwas in SendMail da unten. –
Das Unterstreichungskonzept von RESTful APIs ist, dass es auf der HTTP-Spezifikation beruht (Dies ist ein anderes Protokoll zu smtp), daher ist der "header", auf den verwiesen wird, ein HTTP-Anforderungs-Header (siehe HttpRequest-Typ in .NET). Ich bin mir ziemlich sicher, dass der SmtpClient, den Sie hier initialisieren, keine Verbindung über HTTP herstellt, geschweige denn RESTFul. Es sendet wahrscheinlich SOAP-Pakete an Mail-Server nach dem Herstellen einer Verbindung auf Port 25 mit dem SMTP (wenn wir die Verbindung als eine URL darstellen würde wäre es "SMTP: // SERVERNAME: 25") –