SMTP를 이용해 메일 기능을 구현시 첨부 파일 및 본문에 이미지가 포함되어 전송될경우
Google Mail 같은경우에는 이미지가 짤리는 현상이 발생한다.
이와 같은 현상이 발생할 경우에는 아래 소스와 같이 처리하면 된다.
- Main 메일 전송코드
//Mail Send Main Code
MailMessage mail = new MailMessage();
mail.From = new Mailaddress("FormEmail@mail.com");
AlternateView alterView = ContentToAlternateView(html_body);
mail.AlternateViews.add(alterView);
- Base64 인코딩 이미지 첨부
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))
{
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[] imageBtyes = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(imageBtyes, 0, imageBtyes.Length);
return ms;
}
'언어 > C#' 카테고리의 다른 글
[Error Report] Asp.Net Core IIS 게시오류 (0) | 2021.10.01 |
---|---|
[숙제] 2021.09.29 (0) | 2021.09.29 |
C# Build Error (0) | 2020.09.07 |
C# 메일전송 참조 (0) | 2019.11.20 |
C# ] Dll 참조 (0) | 2019.10.02 |