NEW Nmail PHP 3.4.0 업데이트 - 보안 강화(2단계 인증 등), 중요 메일, 대표 계정, 스팸 자동 업데이트
자세히 보기

Nmail ASP 서비스 종료 안내(EOS)

Nmail ASP (nWmail, Nmail Server) 제품은 유상 유지보수를 포함한 모든 서비스가 종료되었습니다.

헉... 다른곳에선 안보내진당...

성*하 2002.10.15 00:37 조회 1785

PHP로 메일을 보냈는데요...

NMAIL이 설치된 집에서는 다 보내졌었는데(한메일빼구여..ㅠ.ㅠ)

다른곳에 와서 보내보니... 제 메일 서버로는 메일이 가는데..

다른곳 (야후, 핫메일)로는 메일이 안가네여...

앙.... 왜그런거죠?

조금 길지만..

소스...

참... 다른곳에서 아웃룩으로 보내니 또 되네여... ㅠ.ㅠ


<?
/*
SMTP 메일 발송 class

name : JMailer
author : JJiNEY
home : http://www.linuxwin.com
mail : ****@****
ver. : 0.35
*/
class JMail
{
VAR $sp; // SMTP connection
VAR $body; // Mail body
VAR $host; // SMTP host
VAR $port; // SMTP port
VAR $sMail; // Sender mail address;
VAR $sName; // Sender Name;
VAR $rMail; // Receiver mail address;
VAR $rName; // Receiver Name;
VAR $returnpath; // Return path;
VAR $subject; // Mail subject
VAR $body; // Mail body
VAR $content_type; // Mail content type
VAR $charset="euc-kr"; // Charset
VAR $enctype="8bit"; // Character encoding type
VAR $attach; // Attached file
VAR $attach_name; // Attached file name
VAR $attach_type; // Attached file type
VAR $attach_size; // Attached file size
VAR $boundary="----=_NextPart_JMailer_"; // Default Boundary

VAR $msg="<p><font face='굴림' size='3'><b>JMail Error Message</b></font></p>";

/*
Constructor
*/
function JMail($host="localhost", $port="25")
{
$this->host=$host;
$this->port=$port;
}

/*
Connect SMTP Server
*/
function connect()
{
if ($this->sp)
{
fclose($this->sp);
}
else
{
if (!$this->sp=fsockopen($this->host, $this->port, $errno, $errstr, 30))
{
$msg="Error no : $errno<p>Error Message :<br>$errstr";
$this->error($msg);
}
}
}

/*
Set Sender Address
*/
function setFrom($email, $name)
{
if ($this->checkMail($email))
{
$this->sMail=$email;
}
else
{
$this->error("보내는 사람의 메일주소가 형식에 어긋납니다.");
}

if ($this->checkSpace($name))
{
$this->sName=$name;
}
else
{
$this->error("보내는 사람의 이름이 형식에 어긋납니다.");
}
}

/*
Set Receiver Address
*/
function setReceive($email, $name)
{
if ($this->checkMail($email))
{
$this->rMail[count($this->rMail)+1]=$email;
}
else
{
$this->error("보내는 사람의 메일주소가 형식에 어긋납니다.");
}

if ($this->checkSpace($name))
{
$this->rName[count($this->rName)+1]=$name;
}
else
{
$this->error("보내는 사람의 이름이 형식에 어긋납니다.");
}
}

/*
Set Attach file
*/
function setFile(&$attach, $filename, $filetype, $filesize)
{
$this->attach=$attach;
$this->attach_name=$filename;
$this->attach_type=$filetype;
$this->attach_size=$filesize;
}

/*
Set mail message
*/
function setBody($message)
{
$this->body=$message;
}

/*
Set Return path
*/
function setReturnPath($email)
{
if ($this->checkMail($email))
{
$this->returnpath=$email;
}
else
{
$this->error("Return path의 메일주소가 형식에 어긋납니다.");
}
}

/*
Set Content type
*/
function setContent($type)
{
if ($type == "text")
{
$this->content_type="text/plain";
}
else if ($type == "html")
{
$this->content_type="text/html";
}
else
{
$this->error("Content-type 은 text, html 중 선택해 주세요");
}
}

/*
Set Subject
*/
function setSubject($subject)
{
if ($this->checkSpace($subject))
{
$this->subject=$subject;
}
else
{
$this->error("메일 제목이 형식에 어긋납니다.");
}
}

/*
Set Charset
*/
function setCharset($set)
{
$this->charset=$set;
}

/*
Set Encoding type
*/
function setEncoding($type)
{
$this->enctype=$type;
}

/*
Set Boundary
*/
function setBoundary()
{
$this->boundary.=time();
}

/*
Return Attached file type
*/
function getAttachedFileType()
{
if (!$this->attach_type)
{
return "application/octet-stream";
}
return $this->attach_type;
}

/*
Return Encoded Attached file
*/
function getAttachedFile()
{
$fp=fopen($this->attach,"r");
$encoded=fread($fp, $this->attach_size);
$encoded=chunk_split(base64_encode($encoded));
fclose($fp);

return $encoded;
}

function putRcpt()
{
for ($i=1; $i<sizeof($this->rMail)+1; $i++)
{
fputs($this->sp, "rcpt to: <".$this->rMail[$i].">\r\n");
$retval = fgets($this->sp, 128);
}

return $retval;
}

function putTo()
{
fputs($this->sp, "To: ");
for ($i=1; $i<sizeof($this->rMail)+1; $i++)
{

$str.="\"".$this->rName[$i]."\""." <".$this->rMail[$i].">";
if ($i < sizeof($this->rMail))
{
$str=$str.",\r\n\t";
}
else
{
$str.="\r\n";
}
}

fputs($this->sp, $str);
}

/*
Close SMTP Connection
*/
function close()
{
fclose($this->sp);
}

function sendBody()
{
if ($this->content_type == "text/html")
{
$this->body=str_replace("\n", "<br>", $this->body);
}
fputs($this->sp, "Content-Type: ".$this->content_type.";\r\n");
fputs($this->sp, " charset=\"".$this->charset."\"\r\n");
fputs($this->sp, "Content-Transfer-Encoding: ".$this->enctype."\r\n\r\n");
fputs($this->sp, $this->body);
fputs($this->sp, "\r\n");
}

/*
Send mail
*/
function send()
{
//만약 return path가 설정이 되지 않으면 보내는 사람 메일주소를 입력한다.
if (!$this->returnpath) $this->returnpath=$this->sMail;
if (!$this->content_type) $this->content_type="text/html";
if (!$this->sName) $this->error("보내는 사람의 이름이 지정되지 않았습니다.");
if (!$this->sMail) $this->error("보내는 사람의 메일이 지정되지 않았습니다.");
if (!$this->rName) $this->error("받을 사람의 이름이 지정되지 않았습니다.");
if (!$this->rMail) $this->error("받을 사람의 메일이 지정되지 않았습니다.");
if (!$this->subject) $this->error("메일 제목이 지정되지 않았습니다.");
if (!$this->body) $this->error("메일 본문이 지정되지 않았습니다.");

$this->connect();
$this->setBoundary();

fgets($this->sp, 128);
fputs($this->sp, "helo JMailer\r\n"); fgets($this->sp, 128);
fputs($this->sp, "mail from: <".$this->sMail.">\r\n"); $retval[0] = fgets($this->sp, 128);
$this->putRcpt();
fputs($this->sp, "data\r\n"); fgets($this->sp, 128);
fputs($this->sp, "Return-Path: <".$this->returnpath.">\r\n");
fputs($this->sp, "From: ".$this->sName."<".$this->sMail.">\r\n");
$this->putTo();
fputs($this->sp, "Subject: ".$this->subject."\r\n");
fputs($this->sp, "MIME-Version: 1.0\r\n");

if ($this->attach)
{
fputs($this->sp, "Content-Type: multipart/mixed;\r\n");
fputs($this->sp, " boundary=\"".$this->boundary."\"\r\n");
fputs($this->sp, "\r\nThis is a multi-part message in MIME format\r\n\r\n");
fputs($this->sp, "--".$this->boundary."\r\n");
$this->sendBody();

fputs($this->sp, "--".$this->boundary."\r\n");
fputs($this->sp, "Content-Type: ".$this->getAttachedFileType().";\r\n");
fputs($this->sp, " name=\"".$this->attach_name."\"\r\n");
fputs($this->sp, "Content-Transfer-Encoding: base64\r\n");
fputs($this->sp, "Content-Disposition: attachment;\r\n");
fputs($this->sp, " filename=\"".$this->attach_name."\"\r\n\r\n");
fputs($this->sp, $this->getAttachedFile());
fputs($this->sp, "\r\n");
fputs($this->sp, "--".$this->boundary."--\r\n");
}
else
{
$this->sendBody();
}

fputs($this->sp, "\r\n.\r\n");
$retval[1]=fgets($this->sp, 128);
$this->close();

if (!ereg("^250", $retval[0]) || !ereg("^250", $retval[1]))
{
$errormsg="메일을 보내지 못하였습니다.<br>";
$errormsg.=$retval[0]."<br>".$retval[1]."<br><br><br>";
$this->error($errormsg);
}
}

/*
Check Mail address with regular expression
*/
function checkMail($email)
{
if ($this->checkSpace($email))
{
if (!ereg("(^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$)",trim($email)))
{
return false;
}
}
else
{
return false;
}

return true;
}

/*
Check space with regular expression
*/
function checkSpace($str)
{
if (!ereg("([^[:space:]]+)",trim($str)))
{
return false;
}

return true;
}
/*
Echo error message
$msg : error message
*/
function error($msg)
{
die("<b>".$this->msg.$msg."</b>");
}
}

$mh=new JMail();
$mh->setFrom("****@****", "rigelx"); //보내는 사람 지정
$mh->setReceive("****@****", "Sung Jong Ha"); //받는사람 지정
$mh->setReceive("****@****", "Sung Jong Ha"); //받는사람 지정
$mh->setReceive("****@****", "Sung Jong Ha"); //받는사람 지정
$mh->setReceive("****@****", "성종하"); //받는사람 지정
$mh->setReceive("****@****", "SJH"); //받는사람 지정
$mh->setReceive("****@****", "SJH"); //받는사람 지정
$mh->setReceive("****@****", "SJH"); //받는사람 지정
$mh->setSubject("Web Test"); // 메일 제목 지정
$mh->setBody("Web"); // 메일 본문 지정
$mh->send();

echo "SEND<BR>";

?>

댓글 1
이전 글 받은편지중 첨부파일이 비활성화 됩니다. 1 아*비 2002.10.14
다음 글 메일이 안되네요... 1 이*규 2002.10.15