diff --git a/Base/Controller/BasePartialController.cs b/Base/Controller/BasePartialController.cs
index f60aa92..0e712eb 100644
--- a/Base/Controller/BasePartialController.cs
+++ b/Base/Controller/BasePartialController.cs
@@ -14,6 +14,8 @@ using NP.Model;
using System.Net.Http;
using OfficeOpenXml;
using System.Collections;
+using System.Net.Mail;
+using System.Net;
namespace NP.Base
{
@@ -1073,8 +1075,7 @@ namespace NP.Base
System.Web.Mail.MailMessage mail = null;
switch (SendType)
{
- case 1:
- break;
+ case 1: break;
default:
break;
@@ -1122,9 +1123,74 @@ namespace NP.Base
SetError("emailfail:" + rcvEmail + ":" + ex.Message + ex.StackTrace);
return 0;
}
+
return 1;
}
+ ///
+ /// 메일발송 (추가)
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected int SendEmailNew(string title, string Html, string toEmail)
+ {
+ // 2025-01-21 (SendEmail 이 더이상 사용되지 않는 코드로 보여지기에 새로 생성)
+ try
+ {
+ /*
+ Web.config에서 설정된 값을 가져온다 (배열순서)
+ =>
+ */
+
+ string[] masterEmail = GetConfig("masteremail").Split(';');
+ string smtpHost = masterEmail[1];
+ int smtpPort = Convert.ToInt32(masterEmail[2]);
+ string smtpUser = masterEmail[3];
+ string smtpPassword = masterEmail[4];
+ string fromEmail = masterEmail[0];
+
+ using (var smtpClient = new SmtpClient(smtpHost, smtpPort))
+ {
+ // 타임아웃 설정 추가
+ smtpClient.Timeout = 30000; // 10초
+
+ smtpClient.Credentials = new NetworkCredential(smtpUser, smtpPassword);
+ smtpClient.EnableSsl = true;
+
+ // SSL/TLS 설정 명시
+ smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
+
+ using (var mailMessage = new System.Net.Mail.MailMessage())
+ {
+ mailMessage.From = new MailAddress(fromEmail, "영남건설기술교육원");
+ mailMessage.Subject = title;
+ mailMessage.Body = Html;
+ mailMessage.IsBodyHtml = true;
+ mailMessage.To.Add(toEmail);
+
+ smtpClient.Send(mailMessage);
+ }
+ }
+
+ return 1;
+ }
+ catch (SmtpException ex)
+ {
+ // SMTP 특정 예외 처리
+ Logger.Error($"SMTP 에러: {ex.Message}");
+ return 0;
+ }
+ catch (Exception ex)
+ {
+ // 일반 예외 처리
+ Logger.Error($"메일발송 에러 : {ex.Message}");
+ return 0;
+ }
+ }
+
+
///
/// SendMailTemplate
///
@@ -1148,7 +1214,7 @@ namespace NP.Base
try
{
- MailMessage mail = new MailMessage();
+ var mail = new System.Web.Mail.MailMessage();
mail.From = sdEmail;
mail.To =rcvEmail;
mail.Subject = title;
diff --git a/Base/Controller/FOCommon.cs b/Base/Controller/FOCommon.cs
index 82bda9f..413c747 100644
--- a/Base/Controller/FOCommon.cs
+++ b/Base/Controller/FOCommon.cs
@@ -331,46 +331,37 @@ namespace NP.Base.Controllers
}
}
- //else
- //{
- // users = Dao.Get("users.findme", new Hashtable() { { "Mobile1", em }, { "Mobile2", em.Replace("-", "") } }).ToList();
- //}
+
if (users.Count() != 1)
{
//검색결과 2개 개정이라면 보내면 안됨..다른사람일 수도
return JsonOK(-1);
}
var user = users.First();
+
//메시지 전송시간 기록
Random r = new Random();
int pwcallno = r.Next(1, 30000);
Dao.Save("users.pwcalltime", new Hashtable() { { "userno", user.userno }, { "pwcallno", pwcallno } });
var masteremail = GetConfig("masteremail");
String fronturl = GetConfig("fronturl");
- //if (IsEmail)
- //{
- //var et = Dao.Get("mm.mailtp.get", 1).FirstOrDefault();
- //var MHtml = "";
- //if (et != null)
- //{
- // MHtml = et.MHtml.Replace("src=\"/Files/Editor", "src=\"" + fronturl + "/Files/Editor").Replace("^비밀번호링크^", fronturl + "/Account/FindMe?PWCallNo=" + pwcallno + "&UserNo=" + user.UserNo).Replace("^회원명^", user.UserName).Replace("../img/", fronturl + "/img/").Replace("^fronturl^", fronturl);
- //}
- //else
- //{
- var MHtml = "
안녕하세요, " + user.username + "님,
당신의 영남건설기술교육원 비밀번호를 재설정하기 위한 링크를 전달합니다.
" +
- "아래 링크를 클릭하셔서 비밀번호를 재설정해주세요.
" +
- "비밀번호 재설정
이 링크는 24시간 뒤 만료됩니다.";
- //}
- //return JsonOK(SendEmail(0, user.userid, null, null, user.username + "님, 유앤파트너즈 비밀번호를 재설정할 수 있는 링크를 전달합니다.", MHtml));
- return JsonOK(SendEmail(masteremail.Split(';')[1], GetInt(masteremail.Split(';')[2]), masteremail.Split(';')[3], masteremail.Split(';')[4], 999, user.email, masteremail.Split(';')[0], "영남건설기술교육원 운영자", "[영남건설기술교육원] 비밀번호 찾기 안내", MHtml, "", "0:0"));
- //}
- //else
- //{
- // var html = "회원님의 이메일주소는 " + user.UserId + " 아래 링크를 클릭해주셔서 인증을 완료해주세요. [" + fronturl + "/Account/FindMe?PWCallNo=" + pwcallno + "&UserNo=" + user.UserNo + "]";
- // return JsonOK(SendSms(null, user.Mobile, "[유앤파트너즈] 계정찾기", html, null, true, "7"));
- // //Sms.Save("test", new Hashtable() { });
- // //return JsonOK(1);
- //}
+
+ if (IsEmail && users.Count == 1)
+ {
+ var MHtml = "
안녕하세요, " + user.username + "님,
당신의 영남건설기술교육원 비밀번호를 재설정하기 위한 링크를 전달합니다.
" +
+ "아래 링크를 클릭하셔서 비밀번호를 재설정해주세요.
" +
+ "비밀번호 재설정
이 링크는 24시간 뒤 만료됩니다.";
+
+ int mailReuslt = SendEmailNew("[영남건설기술교육원] 비밀번호 찾기 안내", MHtml, email);
+
+
+ return JsonOK(mailReuslt == 1 ? 1000 : 0);
+ }
+ else
+ {
+ return JsonOK(0);
+ }
+
}
[HttpPost]
public JsonResult FindMeFinal(VMUser vm)