게시물을 폼메일로 보낸 후 수신확인하기 정보
게시물을 폼메일로 보낸 후 수신확인하기본문
해당 게시물을 폼메일을 이용해 메일을 보낼 때
img src="http://도메인/mail.php" width="1" height="1" border="0" 의 테그를 포함해 보냅니다.
수신인이 메일을 확인하면 제 서버의 mysql DB에 특정한 값을 기록한 후
게시판에서 여분필드를 이용하여 '읽음'을 표시하려 합니다.
우선 mail.php 안에 소스는
mysqldb를 연결한 후,
어느 게시판의 몇번 게시물인지의 변수를 지정하고, yes라는 값을 저장하게 하려합니다.
그래서 해당 게시판의 리스트에서 yes라는 값이 저장된 게시물은 '읽음'으로 표기해줍니다.
대략적인 로직은 머리속에 있는데 php, mysql로 표현을 못하겠습니다.
위와 같이 mail.php에서 처리할 소스 좀 알려주세요.
댓글 전체
우선 자세히 알지 못합니다. 지금 메일프로그램 소스를 들여다 보는중이라 마침 이부분에 관한 내용이 있어
그냥 힌트를 얻으시라고 빼껴서 올립니다.
PHP 시작
1) smtp_send.php 메일전송루틴중에서...
~~~~ 생략
$message_body_stand = 메세지 본문(수신자부터 제목, 내용등등 본문처리 내용이라고 할때..)
~~~~ 생략
메세지 오픈시 체크 하는 부분..
/* Make masseageID */
$msg_id = microtime().'.'.$iuid.'@'.$SMTP_SERVER;
$msg_id = str_replace(" ","",$msg_id);
if($mailopen == "Y")
{
$KeyString = datecode().date("H:i:s").passwd(8);
$request_mb_key = md5_unix_crypt($KeyString);
$OpenChkSQL = "insert into mail_ok (mb_uid, mb_msgid, mb_check, request_mb_key) values";
$OpenChkSQL .= "('$iuid', ";
$OpenChkSQL .= "'$msg_id', ";
$OpenChkSQL .= "'N', ";
$OpenChkSQL .= "'$request_mb_key')";
mysql_query($OpenChkSQL);
$message_body_stand .= "<img src='remote_check.php?request=$request_mb_key' width='0' height='0' border='0'>";
}
~~~~~
기타 메일 처리 / 전송루틴 ( 첨부파일처리, 포트 오픈등등..)
PHP 끝
2) remote_check.php
PHP 시작
include(" 디비관련등 펑션 ");
/* DB Connect */
$dbconn = dbconn($DATABASE_HOSTNAME, $DATABASE_PORT, $DATABASE_SOCKET, $DATABASE_USER, $DATABASE_PASSWD);
mysql_select_db($DATABASE_NAME);
$SQL = "select * from mail_ok where request_mb_key='$request' and mb_check='N'";
$Rs=mysql_query($SQL);
$Total=mysql_num_rows($Rs);
if($Total)
{
$SQL = "update mail_ok set mb_date=sysdate(), mb_client='$REMOTE_ADDR', mb_check='Y' where request_mb_key='$request'";
mysql_query($SQL);
}
/* DB Close */
dbclose($dbconn);
header("Content-type:image/gif");
@readfile("image/opencheck.gif");
PHP 끝
일반적으로 메일 체크를 위해 사용하는 함수 내용 입니다. 파일명, 변수명은 임으로 되어 있으며 실제 환경에 필요한 필드값으로 처리 하셔야 합니다.
smtp 발송부분은 매우 길기때문에 해당부분만 발췌 했으며, 메일읽음(수신확인이라하면 저작권에 문제된다고 하는지라,, 특허때문에 그렇다는데)부분은 인크루드부분만 빠지고 전체 내용입니다.
이미지파일 opencheck.gif 를 읽혀질때 (수신자에겐 보이지 않는, 원하지도 않지만.., 실제로 소스내에선 43바이트 조그만 파일로 존재 하네요
흰색인가 웹에서 불러보니 아무것도 안보이네요.. 그냥 첨으로 확인 해봤습니다. 한번도 궁금 안했는데..) 상대방 정보를 필요한 디비에 인서트 하는 간단한 원리같습니다만 개인적으론 이런 웹메일 프로그램을 못 만들기 때문에 자세히 설명 하지 못합니다. 퍼와서 사용만 합니다.
필요한 디비에 메일 수신자 고유값과 읽음 체크하는 필드만 있으면 구현가능 하리라 봅니다.
보통 메일의 경우 한사람의 수신자에 많은 메일이 가기 때문에 고유하게 구분하기 위해 복잡하게 키를 만들지만..그냥 간단히 구현 해도 되지 않을까 생각이 듭니다.
조금이라도 힌트를 얻으시길 바랍니다....
그냥 힌트를 얻으시라고 빼껴서 올립니다.
PHP 시작
1) smtp_send.php 메일전송루틴중에서...
~~~~ 생략
$message_body_stand = 메세지 본문(수신자부터 제목, 내용등등 본문처리 내용이라고 할때..)
~~~~ 생략
메세지 오픈시 체크 하는 부분..
/* Make masseageID */
$msg_id = microtime().'.'.$iuid.'@'.$SMTP_SERVER;
$msg_id = str_replace(" ","",$msg_id);
if($mailopen == "Y")
{
$KeyString = datecode().date("H:i:s").passwd(8);
$request_mb_key = md5_unix_crypt($KeyString);
$OpenChkSQL = "insert into mail_ok (mb_uid, mb_msgid, mb_check, request_mb_key) values";
$OpenChkSQL .= "('$iuid', ";
$OpenChkSQL .= "'$msg_id', ";
$OpenChkSQL .= "'N', ";
$OpenChkSQL .= "'$request_mb_key')";
mysql_query($OpenChkSQL);
$message_body_stand .= "<img src='remote_check.php?request=$request_mb_key' width='0' height='0' border='0'>";
}
~~~~~
기타 메일 처리 / 전송루틴 ( 첨부파일처리, 포트 오픈등등..)
PHP 끝
2) remote_check.php
PHP 시작
include(" 디비관련등 펑션 ");
/* DB Connect */
$dbconn = dbconn($DATABASE_HOSTNAME, $DATABASE_PORT, $DATABASE_SOCKET, $DATABASE_USER, $DATABASE_PASSWD);
mysql_select_db($DATABASE_NAME);
$SQL = "select * from mail_ok where request_mb_key='$request' and mb_check='N'";
$Rs=mysql_query($SQL);
$Total=mysql_num_rows($Rs);
if($Total)
{
$SQL = "update mail_ok set mb_date=sysdate(), mb_client='$REMOTE_ADDR', mb_check='Y' where request_mb_key='$request'";
mysql_query($SQL);
}
/* DB Close */
dbclose($dbconn);
header("Content-type:image/gif");
@readfile("image/opencheck.gif");
PHP 끝
일반적으로 메일 체크를 위해 사용하는 함수 내용 입니다. 파일명, 변수명은 임으로 되어 있으며 실제 환경에 필요한 필드값으로 처리 하셔야 합니다.
smtp 발송부분은 매우 길기때문에 해당부분만 발췌 했으며, 메일읽음(수신확인이라하면 저작권에 문제된다고 하는지라,, 특허때문에 그렇다는데)부분은 인크루드부분만 빠지고 전체 내용입니다.
이미지파일 opencheck.gif 를 읽혀질때 (수신자에겐 보이지 않는, 원하지도 않지만.., 실제로 소스내에선 43바이트 조그만 파일로 존재 하네요
흰색인가 웹에서 불러보니 아무것도 안보이네요.. 그냥 첨으로 확인 해봤습니다. 한번도 궁금 안했는데..) 상대방 정보를 필요한 디비에 인서트 하는 간단한 원리같습니다만 개인적으론 이런 웹메일 프로그램을 못 만들기 때문에 자세히 설명 하지 못합니다. 퍼와서 사용만 합니다.
필요한 디비에 메일 수신자 고유값과 읽음 체크하는 필드만 있으면 구현가능 하리라 봅니다.
보통 메일의 경우 한사람의 수신자에 많은 메일이 가기 때문에 고유하게 구분하기 위해 복잡하게 키를 만들지만..그냥 간단히 구현 해도 되지 않을까 생각이 듭니다.
조금이라도 힌트를 얻으시길 바랍니다....
두분 다 감사합니다.
값을 DB에 저장하여 list.skin.php에서 그 값을 불러와 출력하는 방법으로 구현했습니다.
값을 DB에 저장하여 list.skin.php에서 그 값을 불러와 출력하는 방법으로 구현했습니다.