C#'ta E-posta Eklerini ve Gömülü Nesneleri Yönet
E-posta Eklerini Yönet
E-posta eki, e-posta mesajıyla birlikte gönderilen bir dosyadır. Dosya, ekli olduğu mesajın bir parçası ve ayrıca ayrı bir mesaj olarak da gönderilebilir. Attachment sınıf şu ile birlikte kullanılır: MailMessage sınıf. Tüm mesajlar bir gövde içerir. Gövdeye ek olarak ek dosyalar göndermek isteyebilirsiniz. Bunlar ek olarak gönderilir ve şu sınıfın bir örneği olarak temsil edilir: Attachment sınıf. İstediğiniz kadar ek gönderebilirsiniz ancak ek boyutu mail sunucusu tarafından sınırlanır. Örneğin Gmail, 10 MB’den büyük dosyaları desteklemez.
Deneyin!
Ücretsiz olan ile çevrimiçi e-posta eklerini ekleyin veya kaldırın Aspose.Email Editor App.
Ek Ekle
Bir e-postaya ek eklemek için lütfen aşağıdaki adımları izleyin:
- Şunun bir örneğini oluştur MailMessage sınıf.
- Şunun bir örneğini oluştur Attachment sınıf.
- Ek’i şuna yükle Attachment örnek.
- Şunu ekleyin Attachment örneğini şuna MailMessage örnek.
Aşağıdaki kod parçacığı, bir e-postaya ek eklemenin nasıl yapılacağını gösterir.
// 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");
Yukarıda, Aspose.Email ile e-posta mesajınıza eklerin nasıl ekleneceğini açıkladık. Aşağıda eklerin nasıl kaldırılacağını ve bilgilerinin ekranda nasıl gösterileceğini göreceksiniz.
Referans Eki Ekle
Referans eki, dosya veya öğenin kendisini e-posta mesajına eklemek yerine bir dosya veya öğeye link ya da referans içeren bir ek türüdür. E-posta alıcıları referans ekine tıkladıklarında, gerekli izinlere sahipse bağlantılı dosyaya erişebilirler. Referans eki kullanarak daha küçük bir e-posta mesajı gönderebilir ve herkesin dosya ya da öğenin en güncel sürümüne erişimini sağlayabilirsiniz.
Aşağıdaki kod parçacığı, bir e-postaya referans ekinin nasıl ekleneceğini gösterir. Kod aşağıdaki adımları uygular:
- E-posta mesaj dosyasını kullanarak yükler MailMessage.Load() metod.
- refAttach adlı yeni bir ReferenceAttachment nesnesi oluşturur ve ek URL’si "https://[attach_uri]" öğesini yapıcıya parametre olarak gönderir.
- Eklentinin adını "Document.docx" olarak ayarlar Ad refAttach nesnesinin özelliği.
- Ek’in sağlayıcı tipini şuna ayarlar AttachmentProviderType.OneDrivePro kullanarak ProviderType refAttach nesnesinin özelliği.
- Ek’in izin tipini şuna ayarlar AttachmentPermissionType.AnyoneCanEdit kullanarak PermissionType refAttach nesnesinin özelliği.
- refAttach nesnesini şuna ekler Ekler eml nesnesinin koleksiyonu şu kullanarak Add() metod.
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);
Ek’i Kaldır
Bir eki kaldırmak için aşağıdaki adımları izleyin:
- Bir örnek oluştur Attachment sınıf.
- Şu sınıfın örneğinde eki yükleyin Attachment sınıf.
- Şu sınıfın örneğine eki ekleyin MailMessage sınıf.
- Şu sınıfın örneğinden ekleri kaldırın Attachment sınıfı … kullanarak MailMessage class instance.
Aşağıdaki kod parçacığı, bir ekin nasıl kaldırılacağını gösterir.
// 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);
Ek Dosya Adını Görüntüle
Bir ek dosya adını görüntülemek için şu adımları izleyin:
- E-posta mesajındaki ekler üzerinden döngü kurarak her ek’i kaydedin.
- Her ek adını ekranda göster.
Aşağıdaki kod parçacığı, bir ek dosyasının adını ekranda nasıl göstereceğinizi gösterir.
var eml = MailMessage.Load("Attachments.eml");
foreach (var attachment in eml.Attachments)
{
// Display the the attachment file name
Console.WriteLine(attachment.Name);
}
E-posta Eklerini Çıkar
Bu konu, bir e-posta dosyasından ekin nasıl çıkarılacağını açıklar. E-posta eki, e-posta mesajıyla birlikte gönderilen bir dosyadır. Dosya, ayrı bir mesaj olarak veya eklendiği mesajın bir parçası olarak gönderilebilir. Tüm e-posta mesajları ek dosyalar gönderme seçeneği içerir. Bunlar ek olarak gönderilir ve … sınıflarının örnekleri olarak temsil edilir. Attachment sınıf. Attachment sınıf şu ile birlikte kullanılır: MailMessage sınıfı, eklerle çalışmak içindir. Bir e-posta mesajından ekleri çıkarmak için aşağıdaki adımları izleyin:
- Şunun bir örneğini oluştur MailMessage sınıf.
- Bir e-posta dosyasını şunun içine yükleyin MailMessage örnek.
- Şunun bir örneğini oluştur Attachment sınıfı ve bir döngü içinde tüm ekleri çıkarmak için kullanın.
- Ek’i kaydedin ve ekranda gösterin.
|Extracted attachments in email| | :- | |
| Aşağıdaki kod parçacığı, e-posta eklerini nasıl çıkaracağınızı gösterir.
var eml = MailMessage.Load("Message.eml", new MsgLoadOptions());
foreach (var attachment in eml.Attachments)
{
attachment.Save("MessageEmbedded_out.eml");
Console.WriteLine(attachment.Name);
}
Ekten Content-Description’ı Al
Aspose.Email API, ek başlığından ekin Content-Description (İçerik Açıklaması) bilgisini okuma yeteneği sağlar. Aşağıdaki kod parçacığı, ekten içerik açıklamasını nasıl alacağınızı gösterir.
var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].Headers["Content-Description"]);
Gömülü Mesajları Tanımla
Aşağıdaki kod parçacığı, ekin gömülü bir mesaj olup olmadığını nasıl belirleyeceğinizi gösterir.
var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].IsEmbeddedMessage
? "Attachment is an embedded message."
: "Attachment isn't an embedded message.");
İmzalı E-postalardan Ekleri Getir
İmzalı e-postalar tek bir smime.p7m eki içerir. Bu, e-postanın SMIME ile şifrelendiği anlamına gelir. Smime.p7m dosya formatı dijital imzadır. Bu e-postanın içeriğini görmek için şunu kullanın: RemoveSignature metod. Metod bir değer döndürür MailMessage nesne dijital imza olmadan.
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}");
}
}
Satır İçi Görselleri İşleme
E-posta Gövdesine Satır İçi Görsel Ekle
Bu LinkedResource sınıf şu ile birlikte kullanılır: MailMessage e-posta mesajınıza nesneleri gömmek için sınıf. Gömülü bir nesne eklemek için şu adımları izleyin
- Şunun bir örneğini oluştur MailMessage sınıf.
- Gönderen, alıcı ve konu değerlerini şunun içinde belirtin MailMessage örnek.
- Şunun bir örneğini oluştur AlternateView sınıf.
- Şunun bir örneğini oluştur LinkedResource sınıf.
- Bir gömülü nesneyi şuna yükleyin LinkedResourceCollection.
- Yüklenen gömülü nesneyi şuna ekleyin MailMessage class instance.
- Şunu ekleyin AlternateView örneğini şuna MailMessage class instance.
Aşağıdaki kod parçacıkları, düz metin ve HTML gövdeleri ile HTML içine gömülmüş bir resim içeren bir e-posta mesajı üretir
|Image embedded into email| | :- | |
| Herhangi bir sayıda gömülü nesne gönderebilirsiniz. Ekin boyutu posta sunucusu tarafından sınırlanır. Örneğin Gmail, 10 MB’den büyük dosya boyutlarını desteklemez. Aşağıdaki kod parçacıkları, bir e-postaya nesnelerin nasıl gömüleceğini gösterir.
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);
E-posta Gövdesinden Satır İçi Görseli Kaldır
LinkedResourceCollection şunun aracılığıyla erişilir MailMessage.LinkedResources özelliği. Şu LinkedResourceCollection koleksiyon, bir e-posta mesajına eklenen gömülü nesneleri tamamen kaldırmak için bir yöntem sağlar. Şunun aşırı yüklenmiş sürümünü kullanın LinkedResourceCollection.RemoveAt bir e-posta mesajından gömülü bir nesnenin tüm izlerini kaldırmak için yöntem.
Aşağıdaki örnek kod, bir e-posta mesajından gömülü nesnelerin nasıl kaldırılacağını gösterir.
//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);
Gömülü Nesneler İşleme
Gömülü bir nesne, bir uygulama ile oluşturulmuş ve başka bir uygulama tarafından oluşturulan bir belge ya da dosya içine eklenmiş nesnedir. Örneğin, bir Microsoft Excel çalışma sayfası bir Microsoft Word raporuna gömülebilir ya da bir video dosyası bir Microsoft PowerPoint sunumuna gömülebilir. Bir dosya gömüldüğünde, başka bir belgeye eklenmek ya da yapıştırılmak yerine, özgün biçimini korur. Gömülü belge, orijinal uygulamada açılabilir ve değiştirilebilir.
Gömülü Nesneleri Çıkar
Bu konu, bir e-posta dosyasından gömülü nesnelerin nasıl çıkarılacağını açıklar. Gömülü belge, orijinal uygulamada açılabilir ve değiştirilebilir. Bir e-posta mesajından gömülü bir nesne çıkarmak için şu adımları izleyin:
- Şunun bir örneğini oluştur MailMessage sınıf.
- Bir e-posta dosyasını şunun içinde yükleyin MailMessage örnek.
- Bir döngü oluşturun ve şunun bir örneğini oluşturun Attachment içindeki sınıf.
- Ek’i kaydedin ve ekranda gösterin.
- Gönderici ve alıcı adresini şunun içinde belirtin MailMessage örnek.
- E-postayı şununla gönder SmtpClient sınıf.
Aşağıdaki kod parçacığı bir e-postadan gömülü nesneleri çıkarır.
|E-postadaki çıkarılan gömülü nesneler| | :- | |
| Aşağıdaki kod parçacığı gömülü nesneleri nasıl çıkaracağınızı gösterir.
var eml = MailMessage.Load("Message.msg", new MsgLoadOptions());
foreach (var attachment in eml.Attachments)
{
attachment.Save("MessageEmbedded_out.msg");
Console.WriteLine(attachment.Name);
}
HTML E-postalarda Bağlantılı Görselleri Çıkar
HTML gövdesinden bağlantılı resim kaynaklarını dışarıda çıkartın ve Aspose.Email for .NET ile HTML çıktısına gömün. Ayar HtmlSaveOptions.ExtractHTMLBodyResourcesAsAttachments True olarak ayarlandığında, HTML gövdesindeki bağlantılı resimler ve diğer kaynaklar çıkarılır ve gömülür. Bu, bağlantılı içeriğe sahip mesajların orijinal görünümünü korumaya yardımcı olur. Aşağıdaki kod örneği, bir e-posta mesajı yüklemeyi, dış HTML kaynaklarını ek olarak çıkarmayı, isteğe bağlı olarak kaynak render olaylarını yönetmeyi ve ardından mesajı Aspose.Email for .NET kullanarak bir HTML dosyası olarak kaydetmeyi gösterir.
// 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);