Каков наилучший способ создания динамического шаблона электронной почты, который можно изменять без изменения кода в C # .net MVC? - PullRequest
0 голосов
/ 29 августа 2018

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

В настоящее время моя идея состоит в том, чтобы создать файл JSON с телом почты в нескольких ключах и объединить значения ключей в строку в приложении. Это структура JSON, которую я сейчас рассматриваю:

{
  "NewTransaction":{
    "EN":{
      "Greeting":"Dear ",
      "Introduction":"We found that a transaction was completed against your name on ",
      "Body1":". The following are some of your transaction details:",
      "Body2":"Kindly let us know if there is any discrepancy with this transaction"
    },
    "MY":""
  }
}

Пытаясь выяснить это, я нашел этот пакет, который, кажется, был бы весьма полезен при создании тела письма.

Есть ли какой-нибудь другой способ, который, возможно, я пропускаю?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Каждый вопрос, который начинается с «Каков наилучший способ», вероятно, слишком широкий или основанный на мнениях.

На мой взгляд, вы можете создать таблицу (имя поля справа, пример данных слева)

id: 1
от: @@ sysadress @@
to: @@ useremail @@
предмет: Trnasaction завершено
body: здесь ваше html тело, заполненное @@ data @@
... дополнительные поля по мере необходимости ...

смотрите @@ эти вещи @@ - это будут ваши заполнители для динамического текста.

В вашей таблице действий вы добавите столбец, что-то вроде actionMessage, и свяжете его с таблицей Message. Еще лучше создать таблицу Action_Message.

Id, ActionId, MessageId, ActionStatus

Это позволит отправлять разные сообщения, в зависимости от того, было ли ваше действие неудачным, завершенным или отложенным, или что-то еще.

Итак, это может быть один из способов. Но вы вряд ли найдете «лучший путь». Каждый лучший способ может быть улучшен. Но это определенно достигнет вашей главной цели - изменять сообщения без перекомпиляции.

0 голосов
/ 30 августа 2018

Вы должны посмотреть на Почтовый для отправки электронной почты.

Чтобы получить данные, почему бы вам просто не использовать SQL, вы можете сохранить тему и контент в полях, которые можно обновить на лету.

0 голосов
/ 29 августа 2018
EmailTemplateHelper templateHelper = new EmailTemplateHelper( HttpContext.Current.Request.MapPath("~/template_path/EMAIL_TEMPLATE.template"));

Dictionary<string, string> replaceMapper = new Dictionary<string, string>() 
{
    { "TAG1", emailInfo.name },
    { "TAG2", emailInfo.lastname}

};
mailMessage.Subject = templateHelper.GetSubject(replaceMapper);
mailMessage.Body = templateHelper.GetBody(replaceMapper);

mailMessage.IsBodyHtml = true;

В вашем файле шаблона вы должны иметь% TAG1%, куда вы хотите, чтобы ваши данные отправлялись.

...