I am using an aspcore console app as a Webjob to send scheduled emails. In those emails i need to include an image from the wwwroot folder in the email headers. How can i get the url to that to pass into the src attribute of my img tag in the email html?
I test with txt file, to get the file path you could use HOME
environment. It points to the D:\home
on the Kudu. So if your file is in wwwroot, you could use the below code to get it.
Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot" + @"\test.jpg"
And the below is my sample code.
string rootpath = null;
rootpath = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot" + @"\test.jpg";
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("xxxxxxxxxx");
mailMessage.To.Add(new MailAddress("xxxxxxxxxxxx"));
mailMessage.Subject = "message image test";
mailMessage.IsBodyHtml = true;
string content = "If your mail client does not support HTML format, please switch to the 'Normal Text' view and you will see this content.";
mailMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(content, null, "text/plain"));
mailMessage.Body += "<br /><img src=\"cid:weblogo\">";
AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(mailMessage.Body, null, "text/html");
LinkedResource lrImage = new LinkedResource(rootpath, "image/jpg");
lrImage.ContentId = "weblogo";
htmlBody.LinkedResources.Add(lrImage);
mailMessage.AlternateViews.Add(htmlBody);
SmtpClient client = new SmtpClient();
client.Host = "smtp.qq.com";
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("xxxxxxxxxx", "xxxxxxxxxx");
client.Send(mailMessage);
The below is my mail, and we could check the source code and find src="cid:weblogo"
, this means the picture file is not a local file.
You could have a test with my code, hope this could help you.