웹사이트에 새 회원이 가입했을 때, 담당자가 직접 이메일을 보내야 한다면 놓치는 경우가 생깁니다. OpenClaw를 활용하면 DB를 주기적으로 모니터링해서 신규 가입자가 생겼을 때 자동으로 환영 이메일을 발송하고, 관리자에게도 텔레그램 알림을 보낼 수 있습니다.
왜 유용한가
신규 회원 환영 이메일은 첫인상을 결정합니다. 가입 직후 빠르게 발송할수록 서비스 신뢰도가 높아집니다. 하지만 소규모 운영에서 실시간 대응은 쉽지 않습니다. OpenClaw의 cron 기능으로 이 과정을 완전 자동화할 수 있습니다.
준비물
- OpenClaw 설치 및 실행 중인 환경 (Mac, Linux, Synology NAS 등)
- MySQL/MariaDB 기반 회원 DB (WordPress, 커스텀 DB 모두 가능)
- Gmail 계정 및 앱 비밀번호 (2단계 인증 활성화 필요)
- 텔레그램 봇 연결된 OpenClaw
단계별 실습
1단계: Gmail 앱 비밀번호 발급
Google 계정 보안 설정에서 2단계 인증을 활성화한 뒤, 앱 비밀번호를 생성합니다. 생성된 16자리 비밀번호를 별도로 저장해 둡니다.
# 구글 계정 설정 접근
# myaccount.google.com/security
# 2단계 인증 - 앱 비밀번호 - 앱 선택: 메일 / 기기: 기타(직접 입력)
2단계: 신규 가입자 감지 및 발송 스크립트 작성
아래 스크립트는 마지막 확인 시각 이후 가입한 회원을 찾아 환영 이메일을 발송합니다. 스크립트를 /volume4/homes/mintorain/scripts/welcome_email.py로 저장합니다.
import pymysql, smtplib, json, os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime
STATE_FILE = '/volume4/homes/mintorain/scripts/welcome_state.json'
GMAIL_USER = 'yourname@gmail.com'
GMAIL_APP_PW = 'your-app-password'
def load_state():
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
return json.load(f)
return {'last_checked': '2024-01-01 00:00:00'}
def save_state(state):
with open(STATE_FILE, 'w') as f:
json.dump(state, f)
def send_welcome(email, username):
msg = MIMEMultipart('alternative')
msg['Subject'] = '[두온교육] 가입을 환영합니다'
msg['From'] = GMAIL_USER
msg['To'] = email
body = f'안녕하세요 {username}님, 두온교육 회원이 되신 것을 환영합니다.'
msg.attach(MIMEText(body, 'html'))
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
server.login(GMAIL_USER, GMAIL_APP_PW)
server.sendmail(GMAIL_USER, email, msg.as_string())
state = load_state()
last_checked = state['last_checked']
now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
conn = pymysql.connect(
unix_socket='/run/mysqld/mysqld10.sock',
user='wp_user', password='your_db_pw', database='wordpress_db'
)
cursor = conn.cursor()
cursor.execute(
"SELECT user_email, display_name FROM wp_users WHERE user_registered > %s",
(last_checked,)
)
new_users = cursor.fetchall()
conn.close()
for email, name in new_users:
send_welcome(email, name)
state['last_checked'] = now_str
save_state(state)
print(f'신규 가입자 {len(new_users)}명 처리 완료')
3단계: OpenClaw cron으로 10분마다 실행
OpenClaw CLI로 cron 작업을 등록합니다. 10분마다 스크립트를 실행하여 실시간에 가깝게 신규 가입자를 감지합니다.
openclaw cron add --cron '*/10 * * * *' --tz Asia/Seoul --session main --system-event '신규 회원 체크: python3 /volume4/homes/mintorain/scripts/welcome_email.py 실행하고 결과를 텔레그램으로 보고해'
4단계: 관리자 텔레그램 알림 추가
스크립트 실행 결과를 텔레그램으로 직접 받고 싶다면 OpenClaw message 명령어를 스크립트 마지막에 추가합니다.
import subprocess
if new_users:
names = ', '.join([n for _, n in new_users])
msg = f'신규 회원 {len(new_users)}명 가입: {names}'
subprocess.run([
'openclaw', 'message', 'send',
'--channel', 'telegram',
'--to', 'YOUR_CHAT_ID',
'--message', msg
])
5단계: cron 등록 확인 및 테스트
# 등록된 cron 목록 확인
openclaw cron list
# 특정 cron 즉시 실행 (테스트)
openclaw cron run [cron-id]
실제 활용 예시
두온교육 출판사에서는 이 방식으로 도서 무료 증정 이벤트 참여자를 실시간 모니터링합니다. 신청자가 생기면 10분 이내에 확인 이메일이 자동 발송되고, 관리자에게도 텔레그램 알림이 옵니다. 수동으로 이메일을 보내는 수고 없이 참여자 경험이 크게 개선되었습니다.
응용 아이디어
- 강의 결제 완료 시 수강 안내 이메일 자동 발송
- 주문 상태 변경(배송 시작, 배송 완료)마다 고객 알림 이메일
- 회원 탈퇴 시 관리자에게 사유 분석 요청 알림
- 비밀번호 변경 감지 후 보안 안내 이메일 자동 발송
- 특정 기간 동안 로그인이 없는 휴면 회원에게 재방문 유도 이메일