PHP - multiSendMail 라이브러리 개발 완료
PHP - multiSendMail 라이브러리 개발 완료
REDINFO
약 1년전 2022-08-22 01:08:25

8월의 첫 휴가가 떨어지고 그동안 미뤄두었던 PHP 메일 라이브러리를 완성 시켜볼까 하여 무작정 신규 라이브러리를 작업을 시작하였다.  

 

솔직히 메일 라이브러리에 대한 문의가 많이 왔으나 회사일이 너무 많아 손을 쓰지 못하고 있었고  기존 smtpSendMail 라이브러리 2.0을 개발도중에 작은 실수로 1.0 소스와 짬뽕이 되는 바람에 자포자기 하는 심정으로 묶혀두고 있었다. 

 

그렇게 시간이 지나 내 휴가가 시작되었고 새로운 라이브러리인 multiSendMail 개발을 시작하였다. 

 

하지만 개발 시작 2일도 안되서 몸살이 오기 시작하였고 몇일이 더 지나고 나니 내 와이프또한 갑자기 열이나고 목이 아프다 하면서 코로나에 대한 걱정이 들기 시작하였다.

 

일단 편의점에 가서 자가키트기를 사서 검사해보니 역시나 두줄이 나왔고, 그렇게 부랴부랴 짐을 챙겨 병원으로 가서 최종 신속항원검사 까지 하고 양성 판정을 받았다. 

 

코로나 확정받은날은 마지막 휴가날이였는데 따지고 보면 몸 컨디션때문에 휴가 기간 6일동안 3일을 날려먹은 샘이였다.  

 

나보다 불쌍한 사람이 있을 까 하는 심정이지만 이것도 운명이라고 생각하고 일단 컨디션 조절을 하였고 와이프는 거의 반 시신이 되어 목 고통을 호소하였지만 나는 다행히도 피곤함 빼고는 다른 증상이 없었다. 

 

아무튼 그렇게 휴가 마지막날 회사에 코로나 확정판정을 알리고 휴가 복귀를 할 수 없으니 재택근무로 업무를 볼 수 있도록 협의 하였다. 

 

그렇게 휴가 끝나고 복귀 후에도 퇴근 후 집에서 multSendMail 라이브러리를 1시간정도씩 투자하여 조금씩 만들어 갔고 이번주말(8.21)까지 하여 최종 라이브러리를 완성하였다. 

 

지금까지 만든것중에 가장 집중력있게 만든것같은데 코딩보단 테스트하는 시간이 많았던것 같다. 

 

해당 라이브러리는 아래에서 다운로드 가능하다. 

 
multiSendMail- PHP 를 이용한 심플한 메일 발송 라이브러리 - R BLOG
multiSendMail    본 라이브러리는 PHP의 SMTP  와 기본 MAIL 함수를 이용한 메일 발송 프로그램입니다.        기본적으로 메일 발송시 PHP 에서 제공되는 mail 함수도 있지만 이는 비인증 방식으로 발송이 되기 때문에 서버 SPF 설정 및 화··· - R BLOG
blog.redinfo.co.kr/post/view?pid=116

 

사실 개발목표는 간단하게 기존 라이브러리에 PHP 기본메일 함수를 끼워넣어서 신규 라이브러리로 둔갑시킬 예정이였는데 진짜로 신규 라이브러리를 만들줄 몰랐다.  

 

아무튼 이번 라이브러리 역시 SMTP 방식을 선호하고 있다 .

 

그런데 뭐가 변경됬는지는 몰라도 SMTP 소켓통신 커멘드중 HELO 가 DAUM에서 먹히질 않아 EHLO 방식으로 소켓 커멘드를 변경하였는데 feof 가 먹히지 않는 문제가 생겨났다 . 

 

원인은 확실하지는 않지만 커멘트 이후 응답에 대한 시간차가 있지 않나 싶다.  여차여차 이부분도 해결하였지만 속도가 너무 느렸다. 최초 실행하면 약 5~6초 정도 걸렸는데 내 서버만 느린건지 알 수가 없었다. 

 

그리하여 만들어 낸건 비동기 소켓 통신 방식인데 응답을 받지 않는 대신 즉시 실행이라는 장점이 있다.

실행하면 아래와 같이 메시지가 나온다. 

 

 

항상 라이브러리 개발하면서 느끼는건데 git에 올라온 정규화된 프로그램들을 보면 정말 대단하다 싶을 정도로 코드가 잘 짜져 있고 얼마나 많은 시간들을 투자하여 만들었을까 하는 존경심까지 든다. 

 

나 같은 경우 만들다 보면 귀찮고 해서 그냥 대충 때려박은 기능들도 많은데 이게 다 회사 프로젝트 일정 맞추느라 생겨난 습관이라고 변명하고 싶지만 과거에 날로먹는 코딩을 많이했기에 그건 반성하고 있다. 

 

아무쪼록 다들 나쁜 코로나 조심하길!

이 포스트글이 도움이 되었나요?
0
카테고리 연관글

Comment

댓글작성

0(500) | 1(30)