[성현모] KeficoMailService 추가, KMS 인증서 컨피그 추가
This commit is contained in:
163
Projects/NetStandard/KeficoMailService/Manager.cs
Normal file
163
Projects/NetStandard/KeficoMailService/Manager.cs
Normal file
@ -0,0 +1,163 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace KeficoMailService
|
||||
{
|
||||
public class Manager
|
||||
{
|
||||
public string Host { get; set; } = "https://service.kefico.co.kr";
|
||||
|
||||
public readonly string GetFormHTML = "/KEFICO.XML/MAIL/MailManager.asmx";
|
||||
public readonly string SendMailDetailHTML = "/KEFICO.XML/MAIL/MailManager.asmx";
|
||||
|
||||
public string GetFormHtml(HtmlFormType formType)
|
||||
{
|
||||
string result = string.Empty;
|
||||
string url = $"{Host}{GetFormHTML}";
|
||||
|
||||
string soapEnvelope = $@"<?xml version=""1.0"" encoding=""utf-8""?>
|
||||
<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
|
||||
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
|
||||
xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">
|
||||
<soap12:Body>
|
||||
<GetFormHTML xmlns=""http://kefico.co.kr/"">
|
||||
<Type>
|
||||
<SystemName>{formType.SystemName}</SystemName>
|
||||
<FormType>{formType.FormType}</FormType>
|
||||
</Type>
|
||||
</GetFormHTML>
|
||||
</soap12:Body>
|
||||
</soap12:Envelope>";
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine($"Request URL: {url}");
|
||||
Console.WriteLine($"Request soap: {soapEnvelope}");
|
||||
|
||||
byte[] data = Encoding.UTF8.GetBytes(soapEnvelope);
|
||||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
request.Method = "POST";
|
||||
request.ContentType = "application/soap+xml; charset=utf-8";
|
||||
request.ContentLength = data.Length;
|
||||
|
||||
using (Stream stream = request.GetRequestStream())
|
||||
{
|
||||
stream.Write(data, 0, data.Length);
|
||||
}
|
||||
|
||||
using (WebResponse response = request.GetResponse())
|
||||
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
|
||||
{
|
||||
result = reader.ReadToEnd();
|
||||
|
||||
//decode
|
||||
XDocument doc = XDocument.Parse(result);
|
||||
|
||||
XNamespace ns = "http://kefico.co.kr/";
|
||||
|
||||
string htmlEncoded =
|
||||
doc.Descendants(ns + "GetFormHTMLResult").First().Value;
|
||||
|
||||
// HTML Decode
|
||||
|
||||
result = WebUtility.HtmlDecode(htmlEncoded);
|
||||
result = WebUtility.HtmlDecode(htmlEncoded);
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.DarkGreen;
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine("Response");
|
||||
Console.WriteLine(result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public string SendMailDetail(Address from, List<Address> to, List<Address> cc, List<Address> bcc, string subject, string body, MailType type)
|
||||
{
|
||||
string result = string.Empty;
|
||||
string url = $"{Host}{SendMailDetailHTML}";
|
||||
|
||||
string soapEnvelope = $@"<?xml version=""1.0"" encoding=""utf-8""?>
|
||||
<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">
|
||||
<soap12:Body>
|
||||
<SendMailDetail xmlns=""http://kefico.co.kr/"">
|
||||
<From>
|
||||
<AddressMail>{from.AddressMail}</AddressMail>
|
||||
<AddressName>{from.AddressName}</AddressName>
|
||||
</From>
|
||||
<To>{string.Join("",to.Select(x=> $@"
|
||||
<Address>
|
||||
<AddressMail>{x.AddressMail}</AddressMail>
|
||||
<AddressName>{x.AddressName}</AddressName>
|
||||
</Address>"))}
|
||||
</To>
|
||||
<CC>{string.Join("",cc.Select(x => $@"
|
||||
<Address>
|
||||
<AddressMail>{x.AddressMail}</AddressMail>
|
||||
<AddressName>{x.AddressName}</AddressName>
|
||||
</Address>"))}
|
||||
</CC>
|
||||
<Bcc>{string.Join("", bcc.Select(x => $@"
|
||||
<Address>
|
||||
<AddressMail>{x.AddressMail}</AddressMail>
|
||||
<AddressName>{x.AddressName}</AddressName>
|
||||
</Address>"))}
|
||||
</Bcc>
|
||||
<Title>{subject}</Title>
|
||||
<Body>{body}</Body>
|
||||
<Type>{type.ToString()}</Type>
|
||||
</SendMailDetail>
|
||||
</soap12:Body>
|
||||
</soap12:Envelope>";
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine($"Request URL: {url}");
|
||||
Console.WriteLine($"Request soap: {soapEnvelope}");
|
||||
|
||||
byte[] data = Encoding.UTF8.GetBytes(soapEnvelope);
|
||||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
request.Method = "POST";
|
||||
request.ContentType = "application/soap+xml; charset=utf-8";
|
||||
request.ContentLength = data.Length;
|
||||
|
||||
using (Stream stream = request.GetRequestStream())
|
||||
{
|
||||
stream.Write(data, 0, data.Length);
|
||||
}
|
||||
|
||||
using (WebResponse response = request.GetResponse())
|
||||
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
|
||||
{
|
||||
result = reader.ReadToEnd();
|
||||
|
||||
//decode
|
||||
XDocument doc = XDocument.Parse(result);
|
||||
|
||||
XNamespace ns = "http://kefico.co.kr/";
|
||||
|
||||
string htmlEncoded =
|
||||
doc.Descendants(ns + "SendMailDetailResponse").First().Value;
|
||||
|
||||
//decode
|
||||
result = WebUtility.HtmlDecode(htmlEncoded);
|
||||
result = WebUtility.HtmlDecode(result);
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.DarkGreen;
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine("Response");
|
||||
Console.WriteLine(result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user