Class LinkedResource

LinkedResource class

Represents an embedded resource (such as an image or file) that can be referenced by an AlternateView in an email message. Linked resources are typically used to embed images, fonts, or other assets directly into HTML email content using Content-ID references.

public class LinkedResource : AttachmentBase

Constructors

NameDescription
LinkedResource(Stream)Initializes a new instance of the LinkedResource class.
LinkedResource(string)Initializes a new instance of the LinkedResource class.
LinkedResource(Stream, ContentType)Initializes a new instance of the LinkedResource class.
LinkedResource(Stream, string)Initializes a new instance of the LinkedResource class.
LinkedResource(string, ContentType)Initializes a new instance of the LinkedResource class.
LinkedResource(string, string)Initializes a new instance of the LinkedResource class.

Properties

NameDescription
ContentDisposition { get; }Gets Content-Disposition header
ContentId { get; set; }Gets or sets the content id.
ContentLink { get; set; }Gets or sets a URI that the resource must match.
ContentStream { get; set; }Gets or sets the content stream.
ContentType { get; set; }Gets or sets the type of the content.
virtual Headers { get; }Gets headers collection of attachment.
TransferEncoding { get; set; }Gets or sets the transfer encoding.
UniqueId { get; }Gets or sets a unique identifier for the attachment that will be constant for each application run.

Methods

NameDescription
static CreateLinkedResourceFromString(string)Creates the linked resource from string.
static CreateLinkedResourceFromString(string, ContentType)Creates the linked resource from string.
static CreateLinkedResourceFromString(string, Encoding, string)Creates the linked resource from string.
Dispose()Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
virtual Save(Stream)Saves the specified stream.
virtual Save(string)Saves the specified file name.

Remarks

Linked resources are added to LinkedResources and referenced in HTML content using the ‘cid:’ prefix (e.g., <img src=‘cid:resourceId’>). They differ from regular Attachment objects in that they are embedded within the message body rather than appearing as downloadable attachments.

Examples

The following example shows how to embed objects using LinkedResource into an Email.

[C#]

var eml = new MailMessage
{
	From = "AndrewIrwin@from.com",
	To = "SusanMarc@to.com",
	Subject = "This is an email"
};

// Create the plain text part It is viewable by those clients that don't support HTML
var plainView =
	AlternateView.CreateAlternateViewFromString("This is my plain text content", null, "text/plain");

// Create the HTML part.To embed images, we need to use the prefix 'cid' in the img src value.
// The cid value will map to the Content-Id of a Linked resource. Thus <img src='cid:barcode'>
// will map to a LinkedResource with a ContentId of 'barcode'.
var htmlView =
	AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:barcode>", null,
		"text/html");

// Create the LinkedResource (embedded image) and Add the LinkedResource to the appropriate view
var barcode = new LinkedResource("1.jpg", MediaTypeNames.Image.Jpeg)
{
	ContentId = "barcode"
};

eml.LinkedResources.Add(barcode);
eml.AlternateViews.Add(plainView);
eml.AlternateViews.Add(htmlView);

eml.Save("EmbeddedImage_out.msg", SaveOptions.DefaultMsgUnicode);

[Visual Basic]

Dim eml = New MailMessage With {
.From = "AndrewIrwin@from.com",
.[To] = "SusanMarc@to.com",
.Subject = "This is an email"
}

' Create the plain text part It is viewable by those clients that don't support HTML
Dim plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content", Nothing, "text/plain")

' Create the HTML part.To embed images, we need to use the prefix 'cid' in the img src value.
' The cid value will map to the Content-Id of a Linked resource. Thus <img src='cid:barcode'>
' will map to a LinkedResource with a ContentId of 'barcode'.
Dim htmlView = AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:barcode>", Nothing, "text/html")

' Create the LinkedResource (embedded image) and Add the LinkedResource to the appropriate view
Dim barcode = New LinkedResource("1.jpg", MediaTypeNames.Image.Jpeg) With {
  .ContentId = "barcode"
		}

eml.LinkedResources.Add(barcode)
eml.AlternateViews.Add(plainView)
eml.AlternateViews.Add(htmlView)

eml.Save("EmbeddedImage_out.msg", SaveOptions.DefaultMsgUnicode)

See Also