Php 를 통해 메일을 보내려면 어떻게 해야 합니까? Php 의 메일 함수를 사용할 수 없습니다!
자신의 컴퓨터 설치 메일 서버가 밖으로 보낼 수 없는 것 같다.
현재 많은 관리 시스템은 fsocketopen 방식으로 메일 서버에 접속하고 메일을 보내는 데 163 126 을 사용할 수 있는 메일함 인터넷에는 많은 관리 시스템 백그라운드가 사용자 이름과 비밀을 채우는 것과 같은 모델들이 있다 코드는 단체로 보낼 수 있습니다. 괜찮으시다면, 이전에 제가 고쳐주신 fsocketopen 방식을 이용해 대량 또는 단발 이메일을 이용할 수 있는 1 * * * 3 개의 파일
메일 클래스. PHP ""
< " -응? Php
클래스 SMTP
{
var $ host; //호스트
var $port; //포트는 일반적으로 25
var $user 입니다. //SMTP 인증 계정
var $pass; //인증 암호
var $debug = false; //및 서버 세션 정보를 표시하시겠습니까?
var $conn;
var $result_str; //결과
var $in; //클라이언트가 보낸 명령
var $from; //받는 사람이 메시지에 표시된 원본 사서함을 받았습니다.
var $email; //실제 주소
var $to; //대상 사서함
var $subject; //항목
var $body; //내용
var $error;
var $All;
function SMTP ($ array)
{
$ this-> Host = $array['host'];
$this-> Port = $array['port'];
$this-> Email= $array['trueemail'];
$this-> From = $array['from'];
$this-> User = base64 _ encode ($ array ['username']);
$this-> Pass = base64 _ encode ($ array ['password']);
$this-> Debug = $array['debug'];
$this-> Socket = socket _ create (af _ inet, sock _ stream, sol _ TCP);
if($this-> 소켓) {
$ this-> Result_str = "소켓 만들기:". socket _ strerror (socket _ last _ error ());
$this-> Debug_show($this-> Result_str);
}
else
die ("초기화에 실패했습니다. 네트워크 연결 및 매개 변수를 확인하십시오.");
$this-> Conn = socket_connect($this-> 소켓, $ this-> 호스트, $ this-> 포트);
if($this-> Conn){
$this-> Result_str = "소켓 연결 생성:". SOCKET _ strerror (socket _ last _ error ());
$this-> Debug_show($this-> Result_str);
}
else
die ("초기화에 실패했습니다. 네트워크 연결 및 매개 변수를 확인하십시오.");
$this-> Result_str = "서버 응답: < Font color=#cc> " . socket_read ($this-> 소켓, 124). "< /font> " 을 눌러 섹션을 인쇄할 수도 있습니다
$this-> Debug_show($this-> Result_str);
}
functiondebug _ show ($ str)
{
if ($ this-> 디버그)
{
echo $ str. "< P> \r\n ";
}
}
function setmail ($ to, $ subject, $ body) {
$ this-> To = $to;
$this-> Subject = $subject;
$this-> Body = $body;
$ all = "컨텐트 유형: 텍스트/html; Charset=gb2312\r\n "; //메시지를 인코딩하는 방법은 필요에 따라
$ all. = "from:" .. $ this-> 를 변경할 수 있습니다 시작. "\ r \ n";
$ all. = "to:" .. $ this-> To."\r\n ";
$ all. = "subject:" .. $ this-> Subject .. "\ r \ n \ r \ n";
$All .= $this-> 바비;
$this-> All = $All;
}
/**
* 메일 보내기 섹션
* 사서함 배열 수신
*/
function send ($ to array, $ subbs In = "EHLO HELO\r\n ";
$this-> Docommand ();
$this-> In = "AUTH LOGIN\r\n ";
$this-> Docommand ();
$this-> In = $this-> 사용자 .. "\ r \ n";
$this-> Docommand ();
$this-> In = $this-> 패스 .. "\ r \ n";
$this-> Docommand ();
foreach ($ to array as $ to) {
$ this-> Setmail($to,$subject,$body);
$this-> In = "RSET\r\n ";
$this-> Docommand ();
$this-> In = "MAIL FROM:< " . $this-> 이메일. "> \r\n ";
$this-> Docommand ();
$this-> In = "RCPT TO:< " . $this-> To."> \r\n ";
$this-> Docommand ();
$this-> In = "DATA\r\n ";
$this-> Docommand ();
$this-> In = $this-> All."\r\n.\r\n ";
$this-> Docommand ();
}
$this-> In = "QUIT\r\n ";
$this-> Docommand ();
// 종료, 연결 닫기
}
function do command ()
{
socket _ write ($ this-) 소켓, $ this-> In, strlen ($this-> In));
$this-> Debug _ show ("clientaction:" .. $ this-> In);
$this-> Result_str = "Server:<: < Font color=#cc> " . socket_read ($this-> 소켓, 124). "< /font> " 을 눌러 섹션을 인쇄할 수도 있습니다
$this-> Debug_show($this-> Result_str);
}
} >
mailconfig.inc.php "
< -응? Php
$ mailconfig ['host'] = "smtp.126.com"; //호스트
$mailconfig['port'] = "25 "; //포트는 일반적으로 25
$ mailconfig ['trueemail'] = "mhz16 @ 126.com" 입니다. //실제 주소
$ mailconfig ['username'] = "MHz 16"; //SMTP 인증 계정
$ mailconfig ['password'] = "* * * * *"; //자신의
$mailconfig['debug'] = false; //및 서버 세션 정보를 표시하시겠습니까?
$ mailconfig ['from'] = "테스트 @ 테스트.com"; //사용자에게 표시되는 보낸 사람
include_once "MailClass.php ";
set_time_limit(18); >
send demo.php "
< -응? Php
include _ once "mail config.inc.php";
// 간단한 임시 코드 검증 현재 시간 (시간) 의 검증 코드
//if (empty ($ _ get ['s']) | | $ _ get ['; = md5(date('Y-m-d-H', 시간 ()))) {header ("NetEader 163 의 송신 메일 서버는 smtp.163.com 의 모든 사서함에 대한 설명이 있습니다. 이 기능을 사용할 수 있는 것은 새로 등록된 사서함이 잘 작동하지 않는 것 같습니다. 왜냐하면 NetEader 는 26 년 1 에 사서함을 조정했기 때문입니다. 그 전에 등록한 것은 문제없습니다. 그 후에 등록한 것은 다른 기능을 개통하고 한동안 사용해야 하는 < P > 입니다. Mtp 서버에 대한 링크는 명령 프롬프트 라인에서 테스트할 수 있습니다.
먼저 telnet smtp.126.com 25
SMTP 가 사용하는 25 포트가 서비스를 제공하기 때문에
22126.com anti-spam 을 볼 수 있습니다 8]) 을 참조하십시오
EHLO HELO
서버는
25-mail
25-pipe lining
25-AUTH LOGIN
으로 돌아갑니다 M5hbWU6
그런 다음 base64 를 통해 암호화된 사용자 이름과 비밀번호를 입력하면 명령을 통해 서버와 대화할 수 있습니다. 메일 전송 등의 기능 < P > 구체적으로 더 많은 명령에 관심이 있다면 < P > 이 PHP 프로그램을 직접 확인하는 것이 이 기능을 시뮬레이션하는 것입니다. < P > 텔넷으로 직접 연결할 수 없다면 서버가 잘못된 것입니다. 。