BAĞLANTILARIM

Takip Edin:

0

ASP.NET C# İLE MAİL GÖNDERİRKEN BASE64 TİPİNDEKİ İMAJLARIN GÖRÜNMEMESİ

Salı, Nisan 16, 2019 / / , , , ,

C# ile mail gönderilirken eğer göndereceğiniz mail içinde base64 tipinde gömülmüş görselleriniz varsa, bu imajların alıcılar tarafından görüntülenebilmesi için AlternatifeView oluşturulabilir. Uygulamanın kullanımı aşağıdadır.

private static AlternateView ContentToAlternateView(string content)
    {
        var imgCount = 0;
        List<LinkedResource> resourceCollection = new List<LinkedResource>();
        foreach (Match m in Regex.Matches(content, "<img(?<value>.*?)>"))
        {
            imgCount++;
            var imgContent = m.Groups["value"].Value;
            string type = Regex.Match(imgContent, ":(?<type>.*?);base64,").Groups["type"].Value;
            string base64 = Regex.Match(imgContent, "base64,(?<base64>.*?)\"").Groups["base64"].Value;
            if (String.IsNullOrEmpty(type) || String.IsNullOrEmpty(base64))
            {
                //ignore replacement when match normal <img> tag
                continue;
            }
            var replacement = " src=\"cid:" + imgCount + "\"";
            content = content.Replace(imgContent, replacement);
            var tempResource = new LinkedResource(Base64ToImageStream(base64), new ContentType(type))
            {
                ContentId = imgCount.ToString()
            };
            resourceCollection.Add(tempResource);
        }
        AlternateView alternateView = AlternateView.CreateAlternateViewFromString(content, null, MediaTypeNames.Text.Html);
        foreach (var item in resourceCollection)
        {
            alternateView.LinkedResources.Add(item);
        }
        return alternateView;
    }


public static Stream Base64ToImageStream(string base64String)
    {
        byte[] imageBytes = Convert.FromBase64String(base64String);
        MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
        return ms;
    }


Üretilen Alternatif Görünümün mail gönderim fonksiyonu içinde örnek kullanımı:
.....
mail.Priority = MailPriority.High;
mail.Subject = mailBaslik;
mail.AlternateViews.Add(alternatifGorunum);
...


Detaylı kaynak için :

https://stackoverflow.com/questions/39407474/add-attachment-base64-image-in-mailmessage-and-read-it-in-html-body

0 yorum

SON YORUMLAR