Генерация почтового тела HTML в C#

(ns compj-test.core
  (:use [compojure.core])
  (:require
        [ring.util.response :as resp]))

(defroutes main-routes
  (GET "/" [] (resp/redirect "/index.html")))

То, что вы просите, это перенаправление с / на /index.html. Это так же просто, как (соответственно цель / перенаправление) . Не нужно слишком усложнять вещи.

108
задан Rob 22 November 2013 в 19:34
поделиться

5 ответов

Вы можете использовать класс MailDefinition .

Вот как вы его используете:

MailDefinition md = new MailDefinition();
md.From = "test@domain.com";
md.IsBodyHtml = true;
md.Subject = "Test of MailDefinition";

ListDictionary replacements = new ListDictionary();
replacements.Add("{name}", "Martin");
replacements.Add("{country}", "Denmark");

string body = "<div>Hello {name} You're from {country}.</div>";

MailMessage msg = md.CreateMailMessage("you@anywhere.com", replacements, body, new System.Web.UI.Control());

Кроме того, я написал сообщение в блоге о том, как генерировать тело сообщения электронной почты в формате HTML на C # с использованием шаблонов с использованием класса MailDefinition .

176
ответ дан 24 November 2019 в 03:30
поделиться

Используйте класс System.Web.UI.HtmlTextWriter.

StringWriter writer = new StringWriter();
HtmlTextWriter html = new HtmlTextWriter(writer);

html.RenderBeginTag(HtmlTextWriterTag.H1);
html.WriteEncodedText("Heading Here");
html.RenderEndTag();
html.WriteEncodedText(String.Format("Dear {0}", userName));
html.WriteBreak();
html.RenderBeginTag(HtmlTextWriterTag.P);
html.WriteEncodedText("First part of the email body goes here");
html.RenderEndTag();
html.Flush();

string htmlString = writer.ToString();

Для расширенного HTML, который включает создание атрибутов стиля, HtmlTextWriter, вероятно, лучший способ. Однако это может быть немного неудобно в использовании, и некоторым разработчикам нравится, чтобы сама разметка была легко читаемой, но извращенный выбор HtmlTextWriter в отношении отступов немного странный.

В этом примере вы также можете довольно эффективно использовать XmlTextWriter: -

writer = new StringWriter();
XmlTextWriter xml = new XmlTextWriter(writer);
xml.Formatting = Formatting.Indented;
xml.WriteElementString("h1", "Heading Here");
xml.WriteString(String.Format("Dear {0}", userName));
xml.WriteStartElement("br");
xml.WriteEndElement();
xml.WriteElementString("p", "First part of the email body goes here");
xml.Flush();
25
ответ дан 24 November 2019 в 03:30
поделиться

Я бы порекомендовал использовать какие-то шаблоны. Есть разные способы подойти к этому, но по сути держать шаблон электронного письма где-нибудь (на диске, в базе данных и т. Д.) И просто вставлять ключевые данные (IE: имя получателя и т. Д.) В шаблон.

Это далеко более гибкий, потому что это означает, что вы можете изменять шаблон по мере необходимости, не изменяя код. По моему опыту, вы, вероятно, получите запросы на изменение шаблонов от конечных пользователей. Если вы хотите усердно работать, вы можете включить редактор шаблонов.

4
ответ дан 24 November 2019 в 03:30
поделиться

Создание такого HTML-кода вручную, вероятно, лучший способ, если разметка не слишком сложна. Конструктор строк начинает окупаться с точки зрения эффективности только после трех конкатенаций, поэтому для действительно простых вещей подойдет строка + строка.

Кроме этого, вы можете начать использовать элементы управления html (System.Web.UI.HtmlControls ) и отображать их, таким образом вы можете иногда наследовать их и создавать свои собственные классы для сложной условной компоновки.

3
ответ дан 24 November 2019 в 03:30
поделиться

Возможно, вы захотите взглянуть на некоторые шаблонные фреймворки, которые доступны в настоящее время. Некоторые из них являются ответвлениями от MVC, но это не обязательно. Spark - хороший вариант.

1
ответ дан 24 November 2019 в 03:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: