Как послать электронное письмо от MySQL 5.1

У вас есть пара возможностей (как уже было показано в других ответах). Другой возможностью было бы использовать свойства JObject и JProperty, предоставленные Json.Net, для того, чтобы непосредственно получить значение, подобное этому:

var jsonObject = (JObject)JsonConvert.DeserializeObject(json);
var unashamedohio = (JObject)(jsonObject.Property("unashamedohio").Value);
var summonerLevel = unashamedohio.Property("summonerLevel");
Console.WriteLine(summonerLevel.Value);

Еще одна возможность заключалась бы в создании типизированного модель структуры JSON:

public class AnonymousClass
{
    public UnashamedOhio unashamedohio { get; set; }    
}

public class UnashamedOhio
{
    public int summonerLevel { get; set; }
}

и использовать ее для извлечения значения:

var ao = JsonConvert.DeserializeObject<AnonymousClass>(json);
Console.WriteLine(ao.unashamedohio.summonerLevel);

Оба решения печатают одно и то же значение: 30.

IMO вы должны использовать всегда набранные модели, когда это возможно, и если вы делаете много полезной информации из структур JSON. Он обеспечивает проверку ошибок в среде IDE (в отличие от динамической), которая выплачивается во время выполнения.

24
задан David Jimenez 22 December 2008 в 21:54
поделиться

3 ответа

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

  1. Имеют прикладную логику, обнаруживают потребность послать электронное письмо и отправить его.
  2. Имеют триггер MySQL, заполняют таблицу, которая стоит в очереди электронные письма, которые будут отправлены и будут иметь монитор процесса, что таблица и посылает электронные письма.
26
ответ дан roryf 16 October 2019 в 08:12
поделиться

Если у вас запущена служба SMTP, вы можете отправить ее в папку для удаления. Если у вас большой объем, вы можете получить дубликаты имен файлов, но есть способы избежать этого.

В противном случае вам нужно будет создать UDF.

Вот пример решения триггера:

CREATE TRIGGER test.autosendfromdrop BEFORE INSERT ON test.emaildrop
FOR EACH ROW BEGIN
      /* START THE WRITING OF THE EMAIL FILE HERE*/      
      SELECT  concat("To: ",NEW.To),
              concat("From: ",NEW.From),
              concat("Subject: ",NEW.Subject),
              NEW.Body
          INTO OUTFILE 
                   "C:\\inetpub\\mailroot\\pickup\\mail.txt" 
              FIELDS TERMINATED by '\r\n' ESCAPED BY '';            
END;

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

CREATE FUNCTION `HTMLBody`(Msg varchar(8192)) 
    RETURNS varchar(17408) CHARSET latin1 DETERMINISTIC
BEGIN
  declare tmpMsg varchar(17408);
  set tmpMsg = cast(concat(
      'Date: ',date_format(NOW(),'%e %b %Y %H:%i:%S -0600'),'\r\n',
      'MIME-Version: 1.0','\r\n',
      'Content-Type: multipart/alternative;','\r\n',
      ' boundary=\"----=_NextPart_000_0000_01CA4B3F.8C263EE0\"','\r\n',
      'Content-Class: urn:content-classes:message','\r\n',
      'Importance: normal','\r\n',
      'Priority: normal','\r\n','','\r\n','','\r\n',
      'This is a multi-part message in MIME format.','\r\n','','\r\n',
      '------=_NextPart_000_0000_01CA4B3F.8C263EE0','\r\n',
      'Content-Type: text/plain;','\r\n',
      '  charset=\"iso-8859-1\"','\r\n',
      'Content-Transfer-Encoding: 7bit','\r\n','','\r\n','','\r\n',
      Msg,
      '\r\n','','\r\n','','\r\n',
      '------=_NextPart_000_0000_01CA4B3F.8C263EE0','\r\n',
      'Content-Type: text/html','\r\n',
      'Content-Transfer-Encoding: 7bit','\r\n','','\r\n',
      Msg,
      '\r\n','------=_NextPart_000_0000_01CA4B3F.8C263EE0--'
      ) as char);
  RETURN tmpMsg;
END ;
27
ответ дан Tony 16 October 2019 в 08:12
поделиться

Я согласен с Джимом Близардом. База данных не является частью вашего технологического стека, которая должна отправлять электронные письма. Например, что если вы отправите электронное письмо, но затем откатите изменение, которое вызвало это электронное письмо? Вы не можете забрать письмо обратно.

Лучше отправить электронное письмо на уровне кода приложения, после того, как ваше приложение подтвердило, что изменение SQL было успешно выполнено и зафиксировано.

9
ответ дан Bill Karwin 16 October 2019 в 08:12
поделиться
Другие вопросы по тегам:

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