메일 발송주소 질문
본문
// 최고관리자님께 메일 발송
if ($config['cf_email_mb_super_admin']) {
$subject = run_replace('register_form_update_mail_admin_subject', '['.$config['cf_title'].'] '.$mb_nick .' 님께서 회원으로 가입하셨습니다.', $mb_id, $mb_nick);
ob_start();
include_once ('./register_form_update_mail2.php');
$content = ob_get_contents();
ob_end_clean();
$content = run_replace('register_form_update_mail_admin_content', $content, $mb_id);
mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1);
run_event('register_form_update_send_admin_mail', $mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content);
}
mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1);
에서 $config['cf_admin_email'] 을 제 메일주소로 바꾸면 제가 쓴건 저한테 오는데 다른 사람이 쓴건 메일이 안오더라고요.
어떤걸 수정해야할까요?
!-->답변 2
아래 소스는 제가 쓰는 email 로 비번찾기 소스입니다.
적당히 편집해서 사용하세요
// 회원님께 메일 발송
if ($config['cf_email_mb_member']) {
$subject = '['.$config['cf_title'].'] 회원가입을 축하드립니다.';
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
if ($config['cf_use_email_certify']) {
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
}
ob_start();
include_once ($misc_skin_path.'/register_form_update_mail1.php');
$content = ob_get_contents();
ob_end_clean();
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);
// 메일인증을 사용하는 경우 가입메일에 인증 url이 있으므로 인증메일을 다시 발송되지 않도록 함
if($config['cf_use_email_certify'])
$old_email = $mb_email;
}
우선은 질문의 요지가 이해가 잘 안됩니다.
""" $config['cf_admin_email']을 제 메일주소로 바꾸면""" 이부분의 값은 '관리자 페이지'에서
'관리자 메일 주소' 입력 필드에 이메일 주소를 입력하는 것입니다.
이 값은 데이터베이스 테이블(g5_config) 내의 컬럼(cf_admin_email)에 저장되고
저장된 값은 $config['cf_admin_email']로 불러와 사용됩니다.
. . . 특별히 코드를 커스터마이징할 부분은 아닌 듯합니다만~
초심으로 돌아가서 '관리자 메일 주소' 입력 필드를 채워 보세요.
= = = = = = = = = =
그래도 커스터마이징이라면 아래를 참고하여 보세요.
$config['cf_admin_email'] 값 설정과 발송 로직에서
조건 검증이 제대로 이루어지지 않으니
특정 상황에 관리자에게 메일이 발송되지 않는 것입니다.
관리 메일(그루드"@"네이버닷컴)을 config에 담아 사용하시면~
config.php에 변수를 추가하여 사용하시면 어떨까요.
// 기본 관리 이메일 설정
define('G5_DEFAULT_ADMIN_EMAIL', '그루드@네이버닷컴');
*/bbs/register_form_update.php 수정 예시
// 최고관리자님께 메일 발송
if (!isset($config['cf_email_mb_super_admin']) || $config['cf_email_mb_super_admin']) {
// 관리자 이메일 기본값 확인
$admin_email = $config['cf_admin_email'] ?: G5_DEFAULT_ADMIN_EMAIL; // 기본 이메일 설정
if (!filter_var($admin_email, FILTER_VALIDATE_EMAIL)) {
error_log("Invalid admin email: $admin_email");
alert("메일 발송 중 문제가 발생했습니다. 관리자에게 문의하세요.");
}
$subject = '['.$config['cf_title'].'] '.$mb_nick .' 님께서 회원으로 가입하셨습니다.';
ob_start();
try {
include_once('./register_form_update_mail2.php');
$content = ob_get_contents();
} finally {
ob_end_clean();
}
$content = run_replace('register_form_update_mail_admin_content', $content, $mb_id);
mailer($mb_nick, $mb_email, $admin_email, $subject, $content, 1);
run_event('register_form_update_send_admin_mail', $mb_nick, $mb_email, $admin_email, $subject, $content);
}
- 관리자 이메일 설정이 잘못되었거나 누락된 경우에도 기본값을 사용하여 메일 발송.
- 이 설정이 되면, 모든 회원 가입 이벤트에서 메일이 정상적으로 발송 됨.
- 오류 발생 시 알림 또는 로그를 통해 문제를 추적하고 해결할 수 있음.
위의 수정으로 기본값을 설정하고, 값 유효성을 검증하며,
모든 회원 가입 시 정상적으로 메일이 발송될 것입니다.
!-->!-->