Dhananjay Mangela
Dhananjay Mangela

Reputation: 31

Add list-unsubscribe header with Amazon SES

I'm searching for an working C# example to add list-unsubscribe header with Amazon SES.

After reading that Amazon-SES now supports adding Headers I was searching for an C# example but was unable to find one.

Upvotes: 3

Views: 1856

Answers (1)

Kobi
Kobi

Reputation: 138137

I couldn't find nice API like they have for Java. For C#, I found two alternative.

The easiest option is probably to switch to the SMTP interface and .Net's native SMTP classes (or a third-party library): Send an Email Using SMTP with C#
The example code is using the MailMessage class from System.Net.Mail:

// Create and build a new MailMessage object
MailMessage message = new MailMessage();
message.IsBodyHtml = true;
message.From = new MailAddress(FROM,FROMNAME);
message.To.Add(new MailAddress(TO));
message.Subject = SUBJECT;
message.Body = BODY;
// Comment or delete the next line if you are not using a configuration set
message.Headers.Add("X-SES-CONFIGURATION-SET", CONFIGSET);

Another (less attractive) option is to use SendRawEmailRequest. With this API, you have to encode the message along with its headers, attachments, and other data, in a MemoryStream.
Example code, from the AWS SDK .Net documentation - SES - RawMessage:

var sesClient = new AmazonSimpleEmailServiceClient();

var stream = new MemoryStream(
  Encoding.UTF8.GetBytes("From: [email protected]\n" +
    "To: [email protected]\n" +
    "Subject: You're invited to the meeting\n" +
    "Content-Type: text/plain\n\n" +
    "Please join us Monday at 7:00 PM.")
);

var raw = new RawMessage
{
  Data = stream
};

var to = new List<string>() { "[email protected]" };
var from = "[email protected]";

var request = new SendRawEmailRequest
{
  Destinations = to,
  RawMessage = raw,
  Source = from
};

sesClient.SendRawEmail(request);

Upvotes: 1

Related Questions