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 = $@"
{formType.SystemName}
{formType.FormType}
";
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
to, List cc, List bcc, string subject, string body, MailType type)
{
string result = string.Empty;
string url = $"{Host}{SendMailDetailHTML}";
string soapEnvelope = $@"
{from.AddressMail}
{from.AddressName}
{string.Join("",to.Select(x=> $@"
{x.AddressMail}
{x.AddressName}
"))}
{string.Join("",cc.Select(x => $@"
{x.AddressMail}
{x.AddressName}
"))}
{string.Join("", bcc.Select(x => $@"
{x.AddressMail}
{x.AddressName}
"))}
{subject}
{body}
{type.ToString()}
";
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;
}
}
}