-
-
include_once("class.phpmailer.php"); - /**
- * 이메일 모듈 구성 정보 정의
- * /
- define("SMTP_HOST","smtp.mail.yahoo.com"); // SMTP 호스트
- define("SMTP_MAIL"," XXXX@yahoo.cn") // SMTP 사용자 이메일
- define("SMTP_PASS"," XXXX"); // SMTP 비밀번호
define("SERVICE_MAIL"," XXXX@yahoo.cn") // SMTP 사용자 이메일
- define("SERVICE_NAME","PHPBOOK 이메일 테스트"); // SMTP
/**
- * phpmailer를 사용하여 이메일 모듈 보내기
- *
- * @param string $email
- * @param string $user
- * @param string $subject
- * @param string $body
- * @return bool
- */
- 함수에 사용되는 이름 sendMail($email ,$user ,$subject,$body)
- {
- $mail = new PHPMailer();
- //$this;
- $mail->IsSMTP() // SMTP를 사용하도록 설정
- $mail->Host = SMTP_HOST; // SMTP 서버 주소 설정
- $mail->SMTPAuth = true; // SMTP 권한 확인 켜기
- $mail->Username = SMTP_MAIL; username
- $mail->Password = SMTP_PASS; // SMTP 서버 비밀번호
$mail->From = SERVICE_MAIL; // 보내는 사람 주소 설정
- $mail-> ;FromName = SERVICE_NAME; // 보내는 사람 이름 설정
- $mail->AddAddress($email, $user); // 받는 사람 주소 추가
- $mail->AddReplyTo(SERVICE_MAIL, SERVICE_NAME); / 답장 주소 설정
$mail->WordWrap = 50; // 표시 형식 설정
- $mail->IsHTML(true) // 이메일 지원 html
- $mail->Subject = $subject;
- $mail->Body = $body;
- $mail->AltBody = ""; // 텍스트 유형 이메일< ;p> if(!$mail->Send())
- {
- return $mail->ErrorInfo;
- }
- return true;
- }
//테스트 이메일 보내기 시작: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo 실패: /var/www/xiehui/admin/mail/class.smtp.php에 이름 또는 서비스가 알려져 있지 않습니다. line 89
- $tomail = " XXXX@126.com";
- $user = " XXXXlinux";
- $_mailSubject = "메일 테스트 예시!" // 사용자에게 이메일 제목 그룹 보내기
- $_mailBody = "Sina"; // 이메일 콘텐츠 그룹
- sendMail($tomail,$user, $_mailSubject,$_mailBody);
- ? >
-
-
코드 복사 실험을 통해 Yahoo의 SMTP는 사용하기 매우 쉬운 것으로 입증되었지만 소위 Sina는 실제로 사용하기 쉽지 않았습니다.
방법 4, 소켓으로 작성된 프로그램 제공
소켓을 사용하여 이메일을 보내기 위한 캡슐화 클래스:
-
- class sendmail{
- var $lastmessage; //반환된 마지막 응답 메시지 기록
- var $lastact; 액션, 문자열 형식
- var $welcome; // HELO 이후에 사용자를 환영하는 데 사용됩니다.
- var $debug; // 디버깅 정보 표시 여부
- var $smtp; // smtp 서버 ; //smtp 포트 번호
- var $fp; //소켓 핸들
- //메일 보내기 기능
- function send_mail($smtp, $welcome="", $debug=false) {
- if (empty($smtp)) die("SMTP는 비워둘 수 없습니다!");
- $this->smtp=$smtp;
- if(empty($welcome)) {
- $this->welcome=gethostbyaddr("localhost");
- }else
- $this->welcome=$welcome;
- $this->debug=$debug;
- $this->lastmessage="";
- $this->lastact=" ";
- $this->port="25";
- }
- //显示调试信息
- function show_debug($message, $inout) {
- if ($this-> ;디버그) {
- if($inout=="in"){ //响应信息
- $m='<< ';
- }else
- $m='>> ; ';
- if(!ereg("n$", $message))
- $message .= "
";
- $message=nl2br($message);
- echo "${m}${message}";
- }
- }
- //执行传递的命令
- 함수 do_command($command, $code) {
- $this->lastact=$command;
- $this->show_debug($this->lastact, "out");
- fputs( $this->fp , $this->lastact );
- $this->lastmessage = fgets ( $this->fp, 512 );
- $this->show_debug($this->lastmessage, "in ");
- if(!ereg("^$code", $this->lastmessage))
- return false;
- else
- return true;
- }
- //邮件发送处理
- function send( $to,$from,$subject,$message) {
- //连接服务器
- $this->lastact="connect";
- $this-> ;show_debug("连接到SMTP 服务器: ".$this->smtp, "out");
- $this->fp = fsockopen ( $this->smtp, $this->port );
- if ( $this->fp ) {
- $this->set_socket_blocking( $this->fp, true );
- $this->lastmessage=fgets($this-> fp,512);
- $this->show_debug($this->lastmessage, "in");
- if (! ereg ( "^220", $this->lastmessage ) ) {
- return false;
- }else{
- $this->lastact="HELO " . $this->환영합니다. "n";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- $this->lastact="메일 보낸 사람: $from" . "n";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- $this->lastact="RCPT 대상: $to" . "n";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- //开始发送邮件正文
- $this->lastact="DATAn";
- if(!$this->do_command($this->lastact, "354") ){
- fclose($this->fp);
- return false;
- }
- //开始处理邮件主题头
- $head="제목: $subjectn";
- if(!empty($subject) && !ereg($head, $message)){
- $message = $head.$message;
- }
- //开始处理邮件From头
- $head="From: $fromn";
- if(!empty($from) && !ereg($head, $message)) {
- $message = $head.$message;
- }
- //开始处理邮件To头
- $head="대상: $ton";
- if(!empty($to) && !ereg($head, $message)) {
- $message = $head.$message;
- }
- //处理结束串
- if(!ereg("n.n", $message))
- $message .= "n.n";
- $ this->show_debug($message, "out");
- fputs($this->fp, $message);
- $this->lastact="QUITn";
- if(! $this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- }
- return true;
- }else{
- $this->show_debug("连接失败!", "in");
- return false;
- }
- }
- }
- ?>
复代码
소켓을 사용하여 이메일을 보내는 예:
-
- include ("./sendmail.class.php");
- $mail = new sendmail();
- $email = "안녕하세요. 테스트 이메일입니다!";
- $sendmail = new send_mail("smtp.mail.126.com","PHPBOOK",true) //프롬프트 정보 표시
- if($mail->send("XXXX@126.com", "XXXX@126.com", "SOCKET 이메일 테스트", $email)) {
- echo "성공적으로 전송되었습니다!
";
- }else{
- echo "보내지 못했습니다!
";
- }
- ?>
코드 복사
|