게시판에 관리자의 이메일을 지정하여, 고급메일 발송에서 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(). "\"
";
}

 

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())). "\"
";
}

 

 

  • Lv36
    구체적으로 어떤 내용이 어떻게 표시되는 것이 문제인지, 그리고 어떻게 표시되기를 원하시는지 보여 주시면 도움이 되겠습니다.

    이 부분을 정확히 파악하지 않은 상태에서는 주먹구구식으로 인코딩과 디코딩을 반복하는 것 뿐이니까요.
  • Lv36 Lv2

    현재는 

    image.png

     

     

    이렇게 출력되고 있습니다. Document 내용에 태그가 쭉 있기에 이를 HTML코드를 보여주는 것이 아니라 코드를 적용시켜 보내고자 했습니다.

  • Lv2 Lv36
    아예 일관성있게 HTML을 출력하거나
    (소스를 보면 댓글 내용에 HTML이 포함되어 있는 경우에는 잘 나올 것 같거든요. 문서가 문제...)

    만약 HTML 없이 문자만 출력하고 싶으시면
    getContentText() 대신 getContentPlainText()를 사용하는 방법도 있습니다.
    웬만하면 코어에서 제공하는 이런 함수들만 바꿔가며 쓰면 되고,
    태그를 직접 인코딩/디코딩/치환할 필요는 없습니다.
  • Lv36 Lv2
    댓글 내용이 아닌 댓글이 등록된 내용의 원문 Document의 내용이 HTML로 출력되고 있습니다.
    텍스트만 출력하고자 하면 getContentPlainText() 하면 되겠군요.

    제 생각에도 태그를 인코딩하거나 하는건 위험할것 같기도 하고 필요성은 없어보이기도 합니다.

    근데 개인적인 생각은 처음부터 PlainText()를 해주는 것도 좋을 것 같다는 생각입니다 ㅎ,ㅎ
  • Lv2 Lv36

    네, 확인해 보니 댓글은 HTML이 포함되어 있어도 잘 나오는데, 문서는 태그가 모두 노출되도록 되어 있네요. 댓글과 관련된 기능이다 보니, 문서에는 별로 신경을 안 썼나 봅니다.

    글 내용 중 대용량의 사진이나 동영상, 외부 미디어 임베드 코드 등이 포함되어 있는 경우 메일을 보는 데 지장이 있을 수도 있으니, 말씀하신 대로 PlainText로 하는 것이 좋겠습니다.

    그나저나 글 내용만 보여주고 제목을 빠뜨린 것은 또 무슨 심보일까요? 어떤 글에 달린 댓글인지 찾기 어렵게 만들어 놓았네요. 오랫동안 건드리지 않은 코드를 보면 종종 이렇게 나사풀린 기능을 보게 됩니다. ㅋㅋㅋ

  • Lv36 Lv2
    뜻하지 않게 사내 인트라넷과 고객사를 연결하는 과정에서 이것저것 붙이다보니.. 다른 곳이라면 잘 안쓰는 것을 쓰게되는지 간혹 이렇게 나사가 하나씩 빠진걸 볼 때마다 재미있습니다 :)
  • Lv2 Lv36
    깃헙에 이슈라도 하나 등록해 주시면 잊지 않고 보완하겠습니다. 감사합니다.^^