PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)

未晞Sty1e

未晞Sty1e

2016-01-29 15:01

PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题),PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
 

smtp.php

<?php
class smtp

{

/* Public Variables */

var $smtp_port;

var $time_out;

var $host_name;

var $log_file;

var $relay_host;

var $debug;

var $auth;

var $user;

var $pass;

/* Private Variables */
var $sock;

/* Constractor */

function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)

{

$this-debug = FALSE;

$this-smtp_port = $smtp_port;

$this-relay_host = $relay_host;

$this-time_out = 30; //is used in fsockopen()
#

$this-auth = $auth;//auth

$this-user = $user;

$this-pass = $pass;

#

$this-host_name = "localhost"; //is used in HELO command
$this-log_file = "";

 

$this-sock = FALSE;

}

/* Main Function */

function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")

{

$mail_from = $this-get_address($this-strip_comment($from));

$body = ereg_replace("(^|(rn))(.)", "1.3", $body);

$header .= "MIME-Version:1.0rn";

if($mailtype=="HTML"){

$header .= "Content-Type:text/htmlrn";

}

$header .= "To: ".$to."rn";

if ($cc != "") {

$header .= "Cc: ".$cc."rn";

}

$header .= "From: $from<".$from."rn";

$header .= "Subject: ".$subject."rn";

$header .= $additional_headers;

$header .= "Date: ".date("r")."rn";

$header .= "X-Mailer:By Redhat (PHP/".phpversion().")rn";

list($msec, $sec) = explode(" ", microtime());

$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from."rn";

$TO = explode(",", $this-strip_comment($to));

if ($cc != "") {

$TO = array_merge($TO, explode(",", $this-strip_comment($cc)));

}

if ($bcc != "") {

$TO = array_merge($TO, explode(",", $this-strip_comment($bcc)));

}

$sent = TRUE;

foreach ($TO as $rcpt_to) {

$rcpt_to = $this-get_address($rcpt_to);

if (!$this-smtp_sockopen($rcpt_to)) {

$this-log_write("Error: Cannot send email to ".$rcpt_to."n");

$sent = FALSE;

continue;

}

if ($this-smtp_send($this-host_name, $mail_from, $rcpt_to, $header, $body)) {

$this-log_write("E-mail has been sent to <".$rcpt_to."n");

} else {

$this-log_write("Error: Cannot send email to <".$rcpt_to."n");

$sent = FALSE;

}

fclose($this-sock);

$this-log_write("Disconnected from remote hostn");

}

return $sent;

}

 

/* Private Functions */

 

function smtp_send($helo, $from, $to, $header, $body = "")

{

if (!$this-smtp_putcmd("HELO", $helo)) {

return $this-smtp_error("sending HELO command");

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

}

#auth

if($this-auth){

if (!$this-smtp_putcmd("AUTH LOGIN", base64_encode($this-user))) {

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

return $this-smtp_error("sending HELO command");

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

}

if (!$this-smtp_putcmd("", base64_encode($this-pass))) {

return $this-smtp_error("sending HELO command");

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/php/)

}

}

#

if (!$this-smtp_putcmd("MAIL", "FROM:<".$from."")) {

return $this-smtp_error("sending MAIL FROM command");

}

if (!$this-smtp_putcmd("RCPT", "TO:<".$to."")) {

return $this-smtp_error("sending RCPT TO command");

}

if (!$this-smtp_putcmd("DATA")) {

return $this-smtp_error("sending DATA command");

}

if (!$this-smtp_message($header, $body)) {

return $this-smtp_error("sending message");

}

if (!$this-smtp_eom()) {

return $this-smtp_error("sending <CR<LF.<CR<LF [EOM]");

}

if (!$this-smtp_putcmd("QUIT")) {

return $this-smtp_error("sending QUIT command");

}

return TRUE;

}

展开更多 50%)
分享

猜你喜欢

PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)

PHP
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)

用Socket发送电子邮件(利用需要验证的SMTP服务器)

PHP
用Socket发送电子邮件(利用需要验证的SMTP服务器)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一个简单的XML 服务器

Web开发
一个简单的XML 服务器

用Java实现SMTP服务器

编程语言 网络编程
用Java实现SMTP服务器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个实际的OLE服务器的开发

Delphi
一个实际的OLE服务器的开发

虚拟机邮件服务器怎么安装 邮件服务器怎么配置

服务器
虚拟机邮件服务器怎么安装 邮件服务器怎么配置

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使用MySql ODBC进行MYsql和MSsql的数据转换

使用MySql ODBC进行MYsql和MSsql的数据转换

用PHP调用Oracle存储过程

用PHP调用Oracle存储过程
下拉加载更多内容 ↓