Использование цикла при отправке сообщения с почтовым штемпелем

#c# #asp.net #razor

#c# #asp.net #razor

Вопрос:

Я пытаюсь отправить электронное письмо пользователю моего сайта с деталями заказа в нем. В электронном письме будет показан список товаров, которые пользователь заказал. На веб-страницах я использую цикл foreach, который отображает список элементов. Когда я пытаюсь выполнить это в своем сообщении электронной почты с почтовым штемпелем, выдается ошибка: «Недопустимый термин выражения ‘foreach'». Я не знаю, как поступить с этим, и не так много документации по почтовым штемпелям, которая могла бы помочь.

Мой код:

     //database query
PostmarkMessage cmessage = new PostmarkMessage
{
From = "server@server.co.uk",
To = "user@user.co.uk",
Subject = "Thank you! "   ordernumber,
HtmlBody = "<h2>Your Order:"   ordernumber   "</h2><br />"   
 foreach (var o in order)//error here
 {
  <div>
  <div>@o.to_ChooseCanvasSize</div><div>amp;pound;@o.to_Price</div>
  <div>@o.to_Amount</div><div>amp;pound;@o.to_ItemTotalPrice</div></div>
  }
  "end!",
 };
  

Я работаю на C # и ASP.NET Веб-страницы.
Спасибо

Комментарии:

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

2. вы уверены, что код в foreach правильный, вам нужна переменная? как строка или конструктор строк… и выполняйте работу там…

Ответ №1:

Вам нужно вручную собрать строку, используя StringBuilder и отдельный цикл, затем присвоить HtmlBody свойству сгенерированную строку.

В качестве альтернативы, если вы действительно находитесь на странице Razor, вы могли бы использовать встроенный помощник:

 HtmlBody = new Func<object, HelperResult>(@<text>
    <h2>...</h2>
    @foreach(...) { ... }
</text>)(null).ToString()
  

Комментарии:

1. Я нахожусь на странице .cshtml. Я знал, что синтаксис неверен, но не мог разобраться в правильном способе это сделать. 🙁 Спасибо за вашу помощь.