새 댓글 달렸을 때 관리자 이메일 수신시본문 HTML태그
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.3 |
게시판에 관리자의 이메일을 지정하여, 고급메일 발송에서 SMTP 방식으로 메일을 보내고 있습니다.
(오피스 365의 SMTP 사용)
comment.controller.php 파일의 907번 라인부터 하단의 메일 보내는 부분에
{
$mail_content = "
Author: " . $member_info->nick_name . "
<br />Author e-mail: " . $member_info->email_address . "
<br />From : <a href=\"" . $url_comment . "\">" . $url_comment . "</a>
<br />Comment:
<br />\"" . $obj->content . "\"
<br />Document:
<br />\"" . $oDocument->getContentText(). "\"
";
}
$mail_content = "
Author: " . $member_info->nick_name . "
<br />Author e-mail: " . $member_info->email_address . "
<br />From : <a href=\"" . $url_comment . "\">" . $url_comment . "</a>
<br />Comment:
<br />\"" . $obj->content . "\"
<br />Document:
<br />\"" . $oDocument->getContentText(). "\"
";
}
Document: 부분의 getContentText()로 되어 있는데요.
이것 때문에 관리자에게 이메일이 발송될 때에 깨진다라는 인식이 있는 것 같습니다.
혹시 이 코드를 아래와 같이 str_replace하여 보내도 될지 이를 PR해도 될지.. 모르겠습니다.
이유가 따로 있을까요?
{
$mail_content = "
Author: " . $member_info->nick_name . "
<br />Author e-mail: " . $member_info->email_address . "
<br />From : <a href=\"" . $url_comment . "\">" . $url_comment . "</a>
<br />Comment:
<br />\"" . $obj->content . "\"
<br />Document:
<br />\"" . str_replace('<br />',"", htmlspecialchars_decode($oDocument->getContentText())). "\"
";
}
$mail_content = "
Author: " . $member_info->nick_name . "
<br />Author e-mail: " . $member_info->email_address . "
<br />From : <a href=\"" . $url_comment . "\">" . $url_comment . "</a>
<br />Comment:
<br />\"" . $obj->content . "\"
<br />Document:
<br />\"" . str_replace('<br />',"", htmlspecialchars_decode($oDocument->getContentText())). "\"
";
}
얼음조각티
Lv. 3
:)
댓글 7
이 부분을 정확히 파악하지 않은 상태에서는 주먹구구식으로 인코딩과 디코딩을 반복하는 것 뿐이니까요.
현재는
이렇게 출력되고 있습니다. Document 내용에 태그가 쭉 있기에 이를 HTML코드를 보여주는 것이 아니라 코드를 적용시켜 보내고자 했습니다.
(소스를 보면 댓글 내용에 HTML이 포함되어 있는 경우에는 잘 나올 것 같거든요. 문서가 문제...)
만약 HTML 없이 문자만 출력하고 싶으시면
getContentText() 대신 getContentPlainText()를 사용하는 방법도 있습니다.
웬만하면 코어에서 제공하는 이런 함수들만 바꿔가며 쓰면 되고,
태그를 직접 인코딩/디코딩/치환할 필요는 없습니다.
텍스트만 출력하고자 하면 getContentPlainText() 하면 되겠군요.
제 생각에도 태그를 인코딩하거나 하는건 위험할것 같기도 하고 필요성은 없어보이기도 합니다.
근데 개인적인 생각은 처음부터 PlainText()를 해주는 것도 좋을 것 같다는 생각입니다 ㅎ,ㅎ
네, 확인해 보니 댓글은 HTML이 포함되어 있어도 잘 나오는데, 문서는 태그가 모두 노출되도록 되어 있네요. 댓글과 관련된 기능이다 보니, 문서에는 별로 신경을 안 썼나 봅니다.
글 내용 중 대용량의 사진이나 동영상, 외부 미디어 임베드 코드 등이 포함되어 있는 경우 메일을 보는 데 지장이 있을 수도 있으니, 말씀하신 대로 PlainText로 하는 것이 좋겠습니다.
그나저나 글 내용만 보여주고 제목을 빠뜨린 것은 또 무슨 심보일까요? 어떤 글에 달린 댓글인지 찾기 어렵게 만들어 놓았네요. 오랫동안 건드리지 않은 코드를 보면 종종 이렇게 나사풀린 기능을 보게 됩니다. ㅋㅋㅋ