테스트 사이트 - 개발 중인 베타 버전입니다

게시판 작성자에게 메일 보내기 채택완료

왕초보너만오면고 4년 전 조회 2,949

게시판 뷰 페이지 안에 버튼을 추가해서 게시물 작성자에게 메일 보내기 창을 띄우려고 하는데,

<a href="<?php echo G5_BBS_URL ?>/formmail.php?mb_id=<?php echo $view['mb_id']; ?>&name=<?php echo urlencode($view['wr_name']);?>&email=<?php echo get_string_encrypt($email_send); ?>" onclick="win_memo(this.href); return false;" target="_blank">

 버튼

</a>

 

위에 코드로 기입을 하면 "이메일 주소가 올바르지 않습니다."라고 경고창만 뜨는데 해결방법 좀 알 수 있을까요??

댓글을 작성하려면 로그인이 필요합니다.

답변 7개

채택된 답변
+20 포인트
정석코딩

제가 그누보드 소스를 확인해보니... 제가 말했던 거 잘못되었네요.

$email_dec = $email_enc->decrypt($email);

formmail.php 내에서 이렇게 디크립트를 해주고 있네요

위에 get_string_encrypt  를 빼지 마세요. ( 작성자님이 추가하신 줄 알고... ;;; 죄송합니다.)

 

좀 더 확인해보니, 

아래 함수에서 정규표현식 체크를 하는데, 이 형식에 안맞는 이메일이어서 에러 같아요.

\lib\common.lib.php

function get_email_address($email)
{
    preg_match("/[0-9a-z._-]+@[a-z0-9._-]{4,}/i", $email, $matches);

    return $matches[0];
}

 

표현식상으로는.. 아마 이메일 중에 도메인이 4자 미만이거나 숫자/알파벳 등이 아닌 다른 문자가 있거나 

그런 이유일 거 같네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

왕초보너만오면고
4년 전
function get_email_address($email)
{
preg_match("/[0-9a-z._-]+@[a-z0-9._-]{4,}/i", $email, $matches);

return $matches[0];
}

답변 주신 내용에서 도메인 {4} 부분을 {10}으로 바꿔도 동일하게 오류가 나는데 다른 방법 없을까요??

댓글을 작성하려면 로그인이 필요합니다.

웹솔드
4년 전

formmail.php 페이지에 아래 소스 값에 정상으로 값이 넘어와 이메일로 전환되는지 확인이 필요합니다.

 

$email_enc = new str_encrypt();
$email_dec = $email_enc->decrypt($email);

$email = get_email_address($email_dec);

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

웹솔드
4년 전

&email=이메일 값

 

소스보기에서 해당라인에 정상적으로 메일 주소가 오는지를 묻는거에요...

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

왕초보너만오면고
4년 전
게시판 뷰 페이지에서 제작한 버튼을 클릭 후 에러 창 주소 끝에
&email=n2y8eqN9tpzQmX91mI6fz56tnqCVtZNh 이렇게 나오는데

관리자 페이지에서 메일 보내기 클릭 후 주소 끝에는
&email=o6XJpJSho6LC2ZiklJel0Q-- 이렇게 나옵니다.

보내고자 하는 사람은 동일한데, 보내는 링크 주소 끝이 다르게 나와서 메일 출력을 제대로 못하고 있는 거 같습니다. 그래서 어디를 수정해야할지 도무지 감이 오지를 않는데
어디를 수정해야하면 해결할 수 있을까요??

댓글을 작성하려면 로그인이 필요합니다.

정석코딩

그러시면.. 전송되고 있는 (에러나는) email 주소를 한번 올려주시는 게 좋겠네요 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 7개

왕초보너만오면고
4년 전
이메일이 개인정보보호로 댓글에 업로드 되지가 않아서요
해당 관리자 이메일로 테스트 발송 하려고 합니다.
영어(특수기호x 숫자x) @ 네이버.com < 이렇게 되어있습니다.
정석코딩
4년 전
네. 아무래도 직접 테스트 해보실 필요가..

https://regexr.com/
여기에서 정규식 [0-9a-z._-]+@[a-z0-9._-]{4,} 넣으시고,
아래에 Text 칸에 해당 이메일 넣고 테스트 해보세요.
왕초보너만오면고
4년 전
맨 위 상단 expression에 "/[0-9a-z._-]+@[a-z0-9._-]{4,}/i" 코드 기입하고
text 보낼 메일 넣는게 맞나요?? 해당 방법이 맞다면 확인을 어떻게 하면 ㄷ expression에 "/[0-9a-z._-]+@[a-z0-9._-]{4,}/i" 코드 기입하고
text 보낼 메일 넣는게 맞나요??

위에 방법이 맞다면 설정 후 어떻게 확인하면 되는건가요??
정석코딩
4년 전
/[0-9a-z._-]+@[a-z0-9._-]{4,}/i 를 다 넣지 마시고..
[0-9a-z._-]+@[a-z0-9._-]{4,} 만 넣으세요.

그리고 text 칸에 메일 넣는게 맞구요.

제대로 되면 메일만 하이라잇 (형광펜 효과) 됩니다.
왕초보너만오면고
4년 전
답변해주셨던 내용으로 적용 후에 text 에 기재했던 email은 파란색으로 체크 됐는데 이메일 주소에는 문제가 없는건가요??
정석코딩
4년 전
네. 그렇다면 정규식도 통과된 건데...
function get_email_address($email)
{
preg_match("/[0-9a-z._-]+@[a-z0-9._-]{4,}/i", $email, $matches);

return $matches[0];
}
여기서 에러가 나온다는 게 의아하네요.
이 함수에서 올바른 이메일이 리턴된다면 이후 오류 메시지는 나오지 않았을텐데...
왕초보너만오면고
4년 전
답변 감사합니다. 좀 더 자료를 찾아봐야겠네요

댓글을 작성하려면 로그인이 필요합니다.

웹솔드
4년 전

$email_send 값이 정상적으로 넘오는지를 확인해보시기 바랍니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

왕초보너만오면고
4년 전
답변해주신 $email_send 값을 확인하려면 어느 파일을 확인하면 될까요??

댓글을 작성하려면 로그인이 필요합니다.

정석코딩

넘기는 이메일 자체문제일 수도요. 주소가 어떻게 넘어가는지... 보셔야 할 듯 하네요 

주소를 확인해보셔야 할 듯요 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

왕초보너만오면고
4년 전
혹시 어느 파일에서 확인 가능한지 알 수 있을까요??

댓글을 작성하려면 로그인이 필요합니다.

정석코딩

<?php echo get_string_encrypt($email_send); ?>

에서 get_string_encrypt 가 인코딩 해서 그런거네요. 이걸 빼야 합니다.

<?php echo $email_send; ?>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

왕초보너만오면고
4년 전
<a href="<?php echo G5_BBS_URL ?>/formmail.php?mb_id=<?php echo $view['mb_id']; ?>&name=<?php echo urlencode($view['wr_name']);?>&email=<?php echo $email_send; ?>" onclick="win_memo(this.href); return false;" target="_blank">

답변해주셨던 해당 코드로 변경했는데 동일하게 "이메일 주소가 올바르지 않습니다."라고 뜨는데, 다른 수정할 부분이 더 있는건가요??

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인