그누보드 메일 보내는 사람 주소, 본문에 html이 보이는 문제

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
그누보드 메일 보내는 사람 주소, 본문에 html이 보이는 문제

QA

그누보드 메일 보내는 사람 주소, 본문에 html이 보이는 문제

본문


// lib/mailer.lib.php 에서 사용
//define('G5_SMTP',      '127.0.0.1');
define('G5_SMTP',      '');

fastcomet 호스팅을 쓰고 있고, 워드프레스 쓸 땐 다른 설정 없어도 메일이 잘 갔습니다.

 

그누보드에서 127.0.0.1을 지우니까 메일이 오긴 오는데,

 

1. 보내는 사람 주소가 관리자 이메일이 아니라 "~~@...fcomet.com"으로 나옵니다.

 보내는 사람 주소를 관리자 이메일 주소로 보이게 하려면 어떻게 해야 하나요?

 

2. 받은 메일 아래에 html 문서가 중복되어 나타납니다. 본문만 나타나게 하려면 어떻게 해야 하나요?

 

This is a multi-part message in MIME format.

--b1_04ca83ebdf94dbdd91f59993cfbe9bf3
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[메일검사] 내용이 내용이 제대로 보인다면 보내는 메일 서버에는 이상이 없는것입니다.2024-12-24 21:13:20이 메일 주소로는 회신되지 않습니다.


--b1_04ca83ebdf94dbdd91f59993cfbe9bf3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<span style="font-size:9pt;">[메일검사] 내용<p>이 내용이 제대로 보인다면 보내는 메일 서버에는 이상이 없는것입니다.<p>2024-12-24 21:13:20<p>이 메일 주소로는 회신되지 않습니다.</span>



--b1_04ca83ebdf94dbdd91f59993cfbe9bf3--

 

 


try {
        $mail = new PHPMailer(); // defaults to using php "mail()"
        if (defined('G5_SMTP') && G5_SMTP) {
            $mail->IsSMTP(); // telling the class to use SMTP
            $mail->Host = G5_SMTP; // SMTP server
            if(defined('G5_SMTP_PORT') && G5_SMTP_PORT)
                $mail->Port = G5_SMTP_PORT;
        }
        $mail->CharSet = 'UTF-8';
        $mail->From = $fmail;
        $mail->FromName = $fname;
        $mail->Subject = $subject;
        $mail->AltBody = ""; // optional, comment out and test
        $mail->msgHTML($content);
        $mail->addAddress($to);
        if ($cc)
            $mail->addCC($cc);
        if ($bcc)
            $mail->addBCC($bcc);
        //print_r2($file); exit;
        if ($file != "") {
            foreach ($file as $f) {
                $mail->addAttachment($f['path'], $f['name']);
            }
        }
        $mail = run_replace('mail_options', $mail, $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);
        $mail_send_result = $mail->send();
    } catch (Exception $e) {
    }
 

 

이 질문에 댓글 쓰기 :

답변 2

게시판쪽 문제인가요?

Fastcomet 호스팅 서버는 보안 정책에 따라

메일 발송자의 이메일 주소(From)를 호스팅 계정 도메인 기반 주소로 강제할 것입니다.

Fastcomet에서 제공하는 SMTP 인증을 통해 발신자 이메일을 원하는 값으로 설정하거나,

Gmail, 네이버, 카카오와 같은 외부 SMTP 서버를 사용하여 Fastcomet의 제한을 우회하고

발신자 이메일 주소(관리자@이메일)를 자유롭게 설정할 수 있을 것같습니다.

 

※ 특정 '외부 SMTP 서버'를 사용하는 보내는 메일(관리자@이메일)의 경우~

 

1. 보내는 메일(관리자@이메일)만 지정하는 것이라면 

lib/mailer.lib.php의 """ $mail->From = $fmail; """ 이 코드를

""" $mail->From = G5_ADMIN_EMAIL; """로 수정.

 

★ config.php, """ 관리자@이메일 """ 변수(G5_ADMIN_EMAIL)를 한 줄 추가 ~


// lib/mailer.lib.php 에서 사용
//define('G5_SMTP',      '127.0.0.1');// config.php
define('G5_SMTP', '');
define('G5_ADMIN_EMAIL', '관리자@이메일'); // 발신자 이메일 설정

 


try {
        $mail = new PHPMailer(); // defaults to using php "mail()"
        if (defined('G5_SMTP') && G5_SMTP) {
            $mail->IsSMTP(); // telling the class to use SMTP
            $mail->Host = G5_SMTP; // SMTP server
            if(defined('G5_SMTP_PORT') && G5_SMTP_PORT)
                $mail->Port = G5_SMTP_PORT;
        }
        $mail->CharSet = 'UTF-8';
        $mail->From = G5_ADMIN_EMAIL; // config.php의 값을 사용 ########
        $mail->FromName = $fname;
        $mail->Subject = $subject;
        $mail->AltBody = ""; // optional, comment out and test
        $mail->msgHTML($content);
        $mail->addAddress($to);
        if ($cc)
            $mail->addCC($cc);
        if ($bcc)
            $mail->addBCC($bcc);
        //print_r2($file); exit;
        if ($file != "") {
            foreach ($file as $f) {
                $mail->addAttachment($f['path'], $f['name']);
            }
        }
        $mail = run_replace('mail_options', $mail, $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);
        $mail_send_result = $mail->send();
    } catch (Exception $e) {
    }
 

 

2. 받은 메일에 HTML 문서가 중복되어 나타나는 문제는

MIME 멀티파트 메시지 형식 때문입니다.

이 문제는 이메일이 text/plain와 text/html 두 가지 포맷으로 보내질 때 발생합니다.

이메일 클라이언트가 둘 중 하나를 선택해서 표시해야 하지만,

특정 클라이언트는 이를 제대로 처리하지 못해 두 포맷을 모두 표시할 수 있습니다.

★ 수정에 참고할 예시 ( lib/mailer.lib.php)


try {
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = G5_SMTP ?: 'smtp.gmail.com'; // 외부 SMTP 서버 (예: Gmail)
    $mail->SMTPAuth = true;
    $mail->Username = '사용자@지메일'; // SMTP 사용자명
    $mail->Password = 'your-app-password'; // SMTP 비밀번호
    $mail->Port = 587;
    $mail->CharSet = 'UTF-8';
    $mail->setFrom(G5_ADMIN_EMAIL, '사이트 관리자'); // 발신자 설정
    $mail->addAddress($to); // 수신자 설정
    $mail->Subject = $subject; // 메일 제목
    $mail->msgHTML($content); // HTML 본문 설정
    $mail->AltBody = ""; // 일반 텍스트 비활성화
    if (!$mail->send()) {
        echo '메일 발송 실패: ' . $mail->ErrorInfo;
    } else {
        echo '메일 발송 성공!';
    }
} catch (Exception $e) {
    echo '예외 발생: ' . $e->getMessage();
}

 

감사합니다. 알려주신 방법으로 하니까 되긴 되긴 하는데, 여전히 html테그가 보이네요. 대신
define('G5_SMTP',      'mail.도메인.com');
을 사용하니까 html 메일 표시가 잘 되는데, 이렇게 하면 지메일에 보낸 사람 주소에 "도메인:다른 도메인.com"이라고 붙는 문제가 있네요. 도메인이 여러 개인데.

말씀하신 문제는 SMTP 서버가 설정된 도메인을 기준으로
발신 도메인을 강제적으로 표시하기 때문입니다.
현재 사용하신 mail.도메인.com 설정은 HTML 메일 표시에는 적합하지만,
Gmail에서 발신자 이메일 주소에 다른 도메인 정보가 추가되는 것은
SMTP 서버와 발신자 도메인이 일치하지 않아서 발생합니다.

제가 방안 제시 전, 서두에~
"""※ 특정 '외부 SMTP 서버'를 사용하는 보내는 메일(관리자@이메일)의 경우~"""를 썼지요?

발신 도메인마다 적합한 SMTP 서버를 별도로 설정하거나,
"""하나의 도메인을 기준으로 SPF, DKIM, DMARC와 같은 인증 설정"""을 하시어,
모든 도메인에서 신뢰를 받을 수 있도록 구성하는 것이 좋습니다.

ps) '외부 발신  SMTP 서버'(Gmail 등등)를 사용하면 이러한 문제를 간단히 우회할 수 있습니다.
"하나의 도메인을 기준으로 SPF, DKIM, DMARC와 같은 인증 설정"은 어려움이 조금 따르실 겁니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 949
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT