Kelola Lampiran Email dan Objek Terembed dalam C#
Kelola Lampiran Email
Lampiran email adalah file yang dikirim bersama pesan email. File tersebut dapat dikirim sebagai pesan terpisah maupun sebagai bagian dari pesan yang dilampirkannya. The Attachment kelas digunakan dengan MailMessage kelas. Semua pesan menyertakan body. Selain body, Anda mungkin ingin mengirim file tambahan. File ini dikirim sebagai lampiran dan direpresentasikan sebagai sebuah instance dari Attachment kelas. Anda dapat mengirim sejumlah lampiran, tetapi ukuran lampiran dibatasi oleh server email. Gmail, misalnya, tidak mendukung ukuran file lebih dari 10 MB.
Coba sekarang!
Tambahkan atau hapus lampiran email secara online dengan gratis Aspose.Email Editor App.
Tambah Lampiran
Untuk menambahkan lampiran ke email, ikuti langkah-langkah berikut:
- Buat sebuah instansi dari MailMessage kelas.
- Buat sebuah instansi dari Attachment kelas.
- Muat lampiran ke dalam Attachment instance.
- Tambahkan Attachment instance ke dalam MailMessage instance.
Potongan kode berikut menunjukkan cara menambahkan lampiran ke email.
// Create an instance of MailMessage class
var eml = new MailMessage
{
From = "sender@from.com",
To = "receiver@to.com",
Subject = "This is message",
Body = "This is body"
};
// Load an attachment
var attachment = new Attachment("1.txt");
// Add Multiple Attachment in instance of MailMessage class and Save message to disk
eml.Attachments.Add(attachment);
eml.AddAttachment(new Attachment("1.jpg"));
eml.AddAttachment(new Attachment("1.doc"));
eml.AddAttachment(new Attachment("1.rar"));
eml.AddAttachment(new Attachment("1.pdf"));
eml.Save("AddAttachments.eml");
Di atas, kami menjelaskan cara menambahkan lampiran ke pesan email Anda dengan Aspose.Email. Berikutnya menunjukkan cara menghapus lampiran, dan menampilkan informasi tentangnya di layar.
Tambah Lampiran Referensi
Lampiran referensi adalah jenis lampiran yang mencakup tautan atau referensi ke sebuah file atau item, alih-alih menyertakan file atau item itu sendiri dalam pesan email. Ketika penerima email mengklik lampiran referensi, mereka dapat mengakses file yang ditautkan jika memiliki izin yang tepat. Dengan menggunakan lampiran referensi, Anda dapat mengirim pesan email yang lebih kecil dan memastikan semua orang memiliki akses ke versi file atau item yang paling mutakhir.
Potongan kode di bawah ini menunjukkan cara menambahkan lampiran referensi ke email. Kode tersebut melakukan langkah-langkah berikut:
- Membaca file pesan email menggunakan MailMessage.Load() metode.
- Membuat objek ReferenceAttachment baru bernama refAttach, dengan melewatkan URL lampiran "https://[attach_uri]" sebagai parameter ke konstruktornya.
- Mengatur nama lampiran menjadi "Document.docx" menggunakan Name properti dari objek refAttach.
- Mengatur tipe penyedia lampiran menjadi AttachmentProviderType.OneDrivePro menggunakan ProviderType properti dari objek refAttach.
- Mengatur tipe izin lampiran menjadi AttachmentPermissionType.AnyoneCanEdit menggunakan PermissionType properti dari objek refAttach.
- Menambahkan objek refAttach ke Lampiran koleksi objek eml menggunakan Add() metode.
var eml = MailMessage.Load("fileName");
var refAttach = new ReferenceAttachment("https://[attach_uri]")
{
Name = "Document.docx",
ProviderType = AttachmentProviderType.OneDrivePro,
PermissionType = AttachmentPermissionType.AnyoneCanEdit
};
eml.Attachments.Add(refAttach);
Hapus Lampiran
Untuk menghapus lampiran, ikuti langkah-langkah berikut:
- Buat sebuah instance dari Attachment kelas.
- Muat lampiran dalam instance Attachment kelas.
- Tambahkan lampiran ke instance MailMessage kelas.
- Hapus lampiran dari instance Attachment kelas menggunakan MailMessage instance kelas.
Potongan kode berikut menunjukkan cara menghapus lampiran.
// Create an instance of MailMessage class
var eml = new MailMessage {From = "sender@sender.com", To = "receiver@gmail.com"};
// Load an attachment
var attachment = new Attachment("1.txt");
eml.Attachments.Add(attachment);
// Remove attachment from your MailMessage
eml.Attachments.Remove(attachment);
Tampilkan Nama File Lampiran
Untuk menampilkan nama file lampiran, ikuti langkah-langkah berikut:
- Iterasi lampiran dalam pesan email dan simpan tiap lampiran.
- Tampilkan setiap nama lampiran di layar.
Potongan kode berikut menunjukkan cara menampilkan nama file lampiran di layar.
var eml = MailMessage.Load("Attachments.eml");
foreach (var attachment in eml.Attachments)
{
// Display the the attachment file name
Console.WriteLine(attachment.Name);
}
Ekstrak Lampiran Email
Topik ini menjelaskan cara mengekstrak lampiran dari file email. Lampiran email adalah file yang dikirim bersama dengan pesan email. File tersebut dapat dikirim sebagai pesan terpisah maupun sebagai bagian dari pesan yang dilampirkannya. Semua pesan email menyertakan opsi untuk mengirim file tambahan. File-file ini dikirim sebagai lampiran dan direpresentasikan sebagai instance dari Attachment kelas. The Attachment kelas digunakan dengan MailMessage kelas untuk bekerja dengan lampiran. Untuk mengekstrak lampiran dari pesan email, ikuti langkah-langkah berikut:
- Buat sebuah instansi dari MailMessage kelas.
- Muat file email ke dalam MailMessage instance.
- Buat sebuah instansi dari Attachment kelas dan gunakan dalam loop untuk mengekstrak semua lampiran.
- Simpan lampiran dan tampilkan di layar.
|Lampiran yang diekstrak dalam email| | :- | |
| Potongan kode berikut menunjukkan cara mengekstrak lampiran email.
var eml = MailMessage.Load("Message.eml", new MsgLoadOptions());
foreach (var attachment in eml.Attachments)
{
attachment.Save("MessageEmbedded_out.eml");
Console.WriteLine(attachment.Name);
}
Ambil Content-Description dari Lampiran
API Aspose.Email menyediakan kemampuan untuk membaca Content-Description lampiran dari header lampiran. Potongan kode berikut menunjukkan cara mengambil deskripsi konten dari lampiran.
var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].Headers["Content-Description"]);
Identifikasi Pesan Terembed
Potongan kode berikut menunjukkan cara menentukan apakah lampiran adalah pesan tertanam atau tidak.
var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].IsEmbeddedMessage
? "Attachment is an embedded message."
: "Attachment isn't an embedded message.");
Ambil Lampiran dari Email yang Ditandatangani
Email yang ditandatangani berisi satu lampiran smime.p7m. Itu berarti email dienkripsi oleh SMIME. Format file smime.p7m adalah tanda tangan digital. Untuk melihat konten email ini gunakan RemoveSignature metode. Metode mengembalikan sebuah MailMessage objek tanpa tanda tangan digital.
var signedEml = MailMessage.Load("signed.eml");
if (signedEml.IsSigned)
{
for (var i = 0; i < signedEml.Attachments.Count; i++)
{
Console.WriteLine($@"Signed email attachment{i}: {signedEml.Attachments[i].Name}");
}
// The email is signed. Remove a signature.
var eml = signedEml.RemoveSignature();
Console.WriteLine(@"Signature removed.");
for (var i = 0; i < eml.Attachments.Count; i++)
{
Console.WriteLine($@"Email attachment{i}: {eml.Attachments[i].Name}");
}
}
Penanganan Gambar Inline
Tambah Gambar Inline ke Tubuh Email
The LinkedResource kelas digunakan dengan MailMessage kelas untuk menyematkan objek dalam pesan email Anda. Untuk menambahkan objek terembed, ikuti langkah-langkah berikut
- Buat sebuah instansi dari MailMessage kelas.
- Tentukan nilai from, to, dan subject dalam MailMessage instance.
- Buat sebuah instansi dari AlternateView kelas.
- Buat sebuah instansi dari LinkedResource kelas.
- Muat objek tertanam ke dalam LinkedResourceCollection.
- Tambahkan objek tertanam yang dimuat ke dalam MailMessage instance kelas.
- Tambahkan AlternateView instance ke MailMessage instance kelas.
Potongan kode di bawah menghasilkan pesan email dengan tubuh teks biasa dan HTML serta gambar yang tertanam dalam HTML
|Gambar tertanam dalam email| | :- | |
| Anda dapat mengirim sejumlah objek tertanam. Ukuran lampiran dibatasi oleh server email. Gmail, misalnya, tidak mendukung ukuran file lebih dari 10MB. Potongan kode di bawah ini menunjukkan cara menanamkan objek ke dalam Email.
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);
Hapus Gambar Inline dari Tubuh Email
LinkedResourceCollection diakses melalui MailMessage.LinkedResources properti. The LinkedResourceCollection koleksi menyediakan metode untuk sepenuhnya menghapus objek tertanam yang ditambahkan ke dalam pesan email. Gunakan versi overload dari LinkedResourceCollection.RemoveAt metode untuk menghapus semua jejak objek tertanam dari pesan email.
Kode contoh di bawah ini menunjukkan cara menghapus objek tertanam dari pesan email.
//Load the test message with Linked Resources
var eml = MailMessage.Load("EmlWithLinkedResources.eml");
//Remove a LinkedResource
eml.LinkedResources.RemoveAt(0, true);
//Now clear the Alternate View for linked Resources
eml.AlternateViews[0].LinkedResources.Clear(true);
Penanganan Objek Terembed
Objek terembed adalah objek yang dibuat dengan satu aplikasi dan disertakan dalam dokumen atau file yang dibuat oleh aplikasi lain. Misalnya, spreadsheet Microsoft Excel dapat diembed ke dalam laporan Microsoft Word, atau file video dapat diembed ke dalam presentasi Microsoft PowerPoint. Ketika sebuah file diembed, bukan disisipkan atau ditempelkan ke dokumen lain, ia mempertahankan format aslinya. Dokumen terembed dapat dibuka di aplikasi asal dan dimodifikasi.
Ekstrak Objek Terembed
Topik ini menjelaskan cara mengekstrak objek terembed dari file email. Dokumen terembed dapat dibuka di aplikasi asal dan dimodifikasi. Untuk mengekstrak objek terembed dari pesan email, ikuti langkah-langkah berikut:
- Buat sebuah instansi dari MailMessage kelas.
- Muat file email dalam MailMessage instance.
- Buat loop dan buat instance dari Attachment kelas di dalamnya.
- Simpan lampiran dan tampilkan di layar.
- Tentukan alamat pengirim dan penerima dalam MailMessage instance.
- Kirim email menggunakan SmtpClient kelas.
Cuplikan kode di bawah ini mengekstrak objek tersemat dari email.
|Objek tersemat yang diekstrak dalam email| | :- | |
| Cuplikan kode berikut menunjukkan cara mengekstrak objek tersemat.
var eml = MailMessage.Load("Message.msg", new MsgLoadOptions());
foreach (var attachment in eml.Attachments)
{
attachment.Save("MessageEmbedded_out.msg");
Console.WriteLine(attachment.Name);
}
Ekstrak Gambar Terhubung dalam Email HTML
Ekstrak sumber daya gambar terhubung secara eksternal dari tubuh HTML dan sematkan ke output HTML dengan Aspose.Email untuk .NET. Atur HtmlSaveOptions.ExtractHTMLBodyResourcesAsAttachments menjadi True, dan gambar terhubung serta sumber daya lain dalam tubuh HTML akan diekstrak dan disematkan. Ini membantu mempertahankan tampilan asli pesan dengan konten terhubung. Contoh kode berikut memperlihatkan cara memuat pesan email, mengekstrak sumber daya HTML eksternal sebagai lampiran, secara opsional menangani peristiwa rendering sumber daya, dan kemudian menyimpan pesan sebagai file HTML menggunakan Aspose.Email untuk .NET.
// Load the email message
var mailMessage = MailMessage.Load("input.eml");
// Set options to extract external HTML resources
var options = new HtmlSaveOptions();
options.ExtractHTMLBodyResourcesAsAttachments = true;
// Optional: Handle resource rendering events
options.ResourceHtmlRendering += (sender, e) =>
{
Console.WriteLine(e.PathToResourceFile + " " + ((Attachment)sender).ContentId);
};
// Save the HTML representation of the email
mailMessage.Save("output.html", options);