Как я могу получить путь к файлу изображения в папке wwwroot размещенного в Azure основного приложения asp .net core внутри webjob? - PullRequest
0 голосов
/ 28 июня 2019

Я использую консольное приложение aspcore в качестве веб-задания для отправки запланированных писем. В этих письмах мне нужно включить изображение из папки wwwroot в заголовки писем. Как я могу получить URL-адрес для передачи в атрибут src моего тега img в html электронной почты?

1 Ответ

0 голосов
/ 28 июня 2019

Я тестирую с txt файлом, чтобы получить путь к файлу, который вы могли бы использовать HOME. Это указывает на D:\home на Куду. Поэтому, если ваш файл находится в wwwroot, вы можете использовать приведенный ниже код, чтобы получить его.

Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot" + @"\test.jpg" 

А ниже приведен пример кода.

            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);

Ниже моя почта, и мы можем проверить исходный код и найти src="cid:weblogo", это означает, что файл изображения не является локальным файлом.

enter image description here

Вы можете провести тест с моим кодом, надеюсь, это поможет вам.

...