<p>Hangfire MailMessage рдХреЛ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рд╕рд┐рддре░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: HangfireIO/Hangfire

рдЬрдм рдореИрдВ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд▓рдореИрд╕реЗрдЬ рдХреЛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдиреМрдХрд░реА рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рд░рд╣рддреА рд╣реИред

рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ

--рд╣реИрдВрдЧрдлрд╛рдпрд░ рдХреЙрд▓
Hangfire.BackgroundJob.Enqueue(() => FireSMTPSend(mailMessage));

--рд╡рд┐рдзрд┐ рдЬреЛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддреА рд╣реИ

        public static void FireSMTPSend(MailMessage mailMessage)
        {
            using (var smtp = new SmtpClient())
            {
                smtp.Send(mailMessage);
            }
        }

рдпрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЕрдиреБрддреНрддреАрд░реНрдг рд╣реЛрдирд╛
рд░рд╛рдЬреНрдп рдХреЛ 'рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг' рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛: рд▓рдХреНрд╖реНрдп рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред
Newtonsoft.Json.JsonSerializationException

System.Net.Mail.MailAddress рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдеред рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдпрд╛ рддреЛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдпрд╛ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ JsonConstructor рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред рдкрде 'рдЯреВ [0]ред рдбрд┐рд╕реНрдкреНрд▓реЗрдирд╛рдо', рдкрдВрдХреНрддрд┐ 1, рд╕реНрдерд┐рддрд┐ 172ред

Newtonsoft.Json.JsonSerializationException: System.Net.Mail.MailAddress рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдеред рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдпрд╛ рддреЛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдпрд╛ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ JsonConstructor рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реЛред рдкрде 'рдЯреВ [0]ред рдбрд┐рд╕реНрдкреНрд▓реЗрдирд╛рдо', рдкрдВрдХреНрддрд┐ 1, рд╕реНрдерд┐рддрд┐ 172ред
рдиреНрдпреВрдЯрдирд╕реЙрдлреНрдЯ рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (JsonReader рд░реАрдбрд░, рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк, JsonContract рдЕрдиреБрдмрдВрдз, JsonProperty рд╕рджрд╕реНрдп, JsonContainerContract рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдмрдВрдз, JsonProperty рдХрдВрдЯреЗрдирд░ рд╕рджрд╕реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдореМрдЬреВрджрд╛ рд╡реИрд▓реНрдпреВ) рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (JsonReader рд░реАрдбрд░, рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк, JsonContract рдЕрдиреБрдмрдВрдз, JsonProperty рд╕рджрд╕реНрдп, JsonContainerContract рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдмрдВрдз, JsonProperty рдХрдВрдЯреЗрдирд░ рд╕рджрд╕реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдореМрдЬреВрджрд╛ рд╡реИрд▓реНрдпреВ) рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList (IList рд╕реВрдЪреА, JsonReader рд░реАрдбрд░, JsonArrayContract рдЕрдиреБрдмрдВрдз, JsonProperty рдХрдВрдЯреЗрдирд░рдкреНрд░реЙрдкрд░реНрдЯреА, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдИрдбреА) рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList (JsonReader рд░реАрдбрд░, рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк, JsonContract рдЕрдиреБрдмрдВрдз, JsonProperty рд╕рджрд╕реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдореМрдЬреВрджрд╛ рд╡реИрд▓реНрдпреВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдИрдбреА) рдкрд░
рдиреНрдпреВрдЯрдирд╕реЙрдлреНрдЯ рдкрд░
рдиреНрдпреВрдЯрдирд╕реЙрдлреНрдЯ рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject рдкрд░ (рдСрдмреНрдЬреЗрдХреНрдЯ newObject, JsonReader рд░реАрдбрд░, JsonObjectContract рдЕрдиреБрдмрдВрдз, JsonProperty рд╕рджрд╕реНрдп, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдИрдбреА)
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (JsonReader рд░реАрдбрд░, рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк, JsonContract рдЕрдиреБрдмрдВрдз, JsonProperty рд╕рджрд╕реНрдп, JsonContainerContract рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдмрдВрдз, JsonProperty рдХрдВрдЯреЗрдирд░ рд╕рджрд╕реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдореМрдЬреВрджрд╛ рд╡реИрд▓реНрдпреВ) рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (JsonReader рд░реАрдбрд░, рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк, JsonContract рдЕрдиреБрдмрдВрдз, JsonProperty рд╕рджрд╕реНрдп, JsonContainerContract рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдмрдВрдз, JsonProperty рдХрдВрдЯреЗрдирд░ рд╕рджрд╕реНрдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдореМрдЬреВрджрд╛ рд╡реИрд▓реНрдпреВ) рдкрд░
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (JsonReader рд░реАрдбрд░, рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк, рдмреВрд▓рд┐рдпрди рдЪреЗрдХрдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА) рдкрд░
Newtonsoft.Json.JsonSerializer.DeserializeInternal рдкрд░ (JsonReader рд░реАрдбрд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк рдХрд░реЗрдВ)
Newtonsoft.Json.JsonConvert.DeserializeObject (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди, рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░, JsonSerializer рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕) рдкрд░
Hangfire.Common.JobHelper.FromJson рдкрд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди, рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░)
Hangfire.Storage.InvocationData.DeserializeArgument (рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ, рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░) рдкрд░
--- рдкрд┐рдЫрд▓реЗ рд╕реНрдерд╛рди рд╕реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХрд╛ рдЕрдВрдд рдЬрд╣рд╛рдВ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдерд╛ ---
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() рдкрд░
Hangfire.Storage.InvocationData.DeserializeArgument (рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ, рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░) рдкрд░
Hangfire.Storage.InvocationData.DeserializeArguments рдкрд░ (MethodInfo methodInfo, String[] рддрд░реНрдХ)
Hangfire.Storage.InvocationData.Deserialize() рдкрд░

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЙрд╕реА рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдиреАрдЪреЗ рджреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдБ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ

--HangFire рдкрд░ рдХреЙрд▓ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВ
Hangfire.BackgroundJob.Enqueue(() => FireSMTPSend(mailMessage.To[0].Address.ToString(),mailMessage.Body));

--рд╣реИрдВрдЧрдлрд╛рдпрд░ рджреНрд╡рд╛рд░рд╛ рднрд╕реНрдо рдХреА рдЬрд╛ рд░рд╣реА рд╡рд┐рдзрд┐

public static void FireSMTPSend(string To,string mailBody)
        {
            var mailMessage = new MailMessage();
            mailMessage.To.Add(new MailAddress(To));
            mailMessage.Body = mailBody;
            using (var smtp = new SmtpClient())
            {
                smtp.Send(mailMessage);
            }
        }

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдЯрдирдЬрд╕рди рдореЗрд▓рдореИрд╕реЗрдЬ рд╡рд┐рдзрд┐ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рд░реНрдп рд╣реИ ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

MailMessage рдХреЛ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдирд╛ рдПрдХ рджрд░реНрдж рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрдиреА рдПрдирдХреНрдпреВ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдлрд┐рд░ рдЕрдкрдиреА рдиреМрдХрд░реА рдХреЗ рдЕрдВрджрд░ рдПрдХ рдореЗрд▓рдореИрд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрдВрдЧреЗ

https://github.com/burningice2866/CompositeC1Contrib.Email/blob/master/Email/MailMessageSerializer.cs#L70
https://github.com/burningice2866/CompositeC1Contrib.Email/tree/master/Email/Serialization

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░/рд╕рдВрд░рдЪрдирд╛рдПрдВ рдкрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

.net рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдпрд╛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд░рдордмрджреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╡реЗ рдХрд╕реНрдЯрдо рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ/рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рднреА рдмрдЪреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ JSON рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

MailMessage рдХреЛ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдирд╛ рдПрдХ рджрд░реНрдж рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрдиреА рдПрдирдХреНрдпреВ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдлрд┐рд░ рдЕрдкрдиреА рдиреМрдХрд░реА рдХреЗ рдЕрдВрджрд░ рдПрдХ рдореЗрд▓рдореИрд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрдВрдЧреЗ

https://github.com/burningice2866/CompositeC1Contrib.Email/blob/master/Email/MailMessageSerializer.cs#L70
https://github.com/burningice2866/CompositeC1Contrib.Email/tree/master/Email/Serialization

@pieceofsummer рдзрдиреНрдпрд╡рд╛рдж :)
@ Burningice2866 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)ред рдореИрдВрдиреЗ рд╣реИрдВрдЧрдлрд╛рдпрд░ рдХреЛ рдПрдХ рд╕реНрддрд░ рдКрдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрджрд┐рдо рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рд╣реИрдВ рдЬреЛ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕