PHP示例演示发送邮件给某个邮箱


Posted in PHP onApril 03, 2019

首先,建立一个index.html文件,代码如下:

<html>
<head>
<title>Simple Send Mail </title>
</head>
<body>
<h1>Mail Form</h1>
<form name="form1" method="post" action="mail.php">
<table>
<tr><td><b>To</b></td><td>
<input type="text" name="mailto" size="35">
</td></tr>
<tr><td><b>Subject</b></td>
<td><input type="text" name="mailsubject" size="35"></td>
</tr>
<tr><td><b>Message</b></td>
<td>
<textarea name="mailbody" cols="50" rows="7"></textarea>
</td>
</tr>
<tr><td colspan="2">
<input type="submit" name="Submit" value="Send">
</td>
</tr>
</table>
</form>
</body>
</html>

然后新建一个“mail.php”文档把传输的文档进行发送

<?php 
$stm="邮件内容"; 
require("smtp.php"); 
########################################## 
$smtpserver = "smtp.qq.com";//SMTP服务器 
$smtpserverport = "465";//SMTP服务器端口 
$smtpusermail = "XXX@qq.com";//SMTP服务器的用户邮箱 
$smtpemailto = "AAA@qq.com";//发送给谁 
$smtpuser = "XXX@qq.com";//SMTP服务器的用户帐号 
$smtppass = "666";//SMTP服务器的用户密码 
$mailsubject = "666 ";//邮件主题 
$mailbody = $stm;//邮件内容 
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件 
########################################## 
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证. 
$smtp->debug = TRUE;//是否显示发送的调试信息 
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype); 
echo "<script>alert('邮件发送成功');parent.document.ADDUser.cheheh.click();</script>"; 
exit; 
} 
?>

最后编写一个邮件类“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("(^|(\r\n))(\.)", "\1.\3", $body); 
$header .= "MIME-Version:1.0\r\n"; 
if($mailtype=="HTML") 
{ 
$header .= "Content-Type:text/html\r\n"; 
} 
$header .= "To: ".$to."\r\n"; 
if ($cc != "") 
{ 
$header .= "Cc: ".$cc."\r\n"; 
} 
$header .= "From: $from<".$from.">\r\n"; 
$header .= "Subject: ".$subject."\r\n"; 
$header .= $additional_headers; 
$header .= "Date: ".date("r")."\r\n"; 
$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n"; 
list($msec, $sec) = explode(" ", microtime()); 
$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n"; 
$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 host\n"); 
} 
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"); 
} 
#auth 
if($this->auth) 
{ 
if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) 
{ 
return $this->smtp_error("sending HELO command"); 
} 
if (!$this->smtp_putcmd("", base64_encode($this->pass))) 
{ 
return $this->smtp_error("sending HELO command"); 
} 
} 
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; 
} 
function smtp_sockopen($address) 
{ 
if ($this->relay_host == "") 
{ 
return $this->smtp_sockopen_mx($address); 
} 
else 
{ 
return $this->smtp_sockopen_relay(); 
} 
} 
function smtp_sockopen_relay() 
{ 
$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n"); 
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); 
if (!($this->sock && $this->smtp_ok())) 
{ 
$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n"); 
$this->log_write("Error: ".$errstr." (".$errno.")\n"); 
return FALSE; 
} 
$this->log_write("Connected to relay host ".$this->relay_host."\n"); 
return TRUE;; 
} 
function smtp_sockopen_mx($address) 
{ 
$domain = ereg_replace("^.+@([^@]+)$", "\1", $address); 
if (!@getmxrr($domain, $MXHOSTS)) 
{ 
$this->log_write("Error: Cannot resolve MX \"".$domain."\"\n"); 
return FALSE; 
} 
foreach ($MXHOSTS as $host) 
{ 
$this->log_write("Trying to ".$host.":".$this->smtp_port."\n"); 
$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out); 
if (!($this->sock && $this->smtp_ok())) 
{ 
$this->log_write("Warning: Cannot connect to mx host ".$host."\n"); 
$this->log_write("Error: ".$errstr." (".$errno.")\n"); 
continue; 
} 
$this->log_write("Connected to mx host ".$host."\n"); 
return TRUE; 
} 
$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n"); 
return FALSE; 
} 
function smtp_message($header, $body) 
{ 
fputs($this->sock, $header."\r\n".$body); 
$this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> ")); 
return TRUE; 
} 
function smtp_eom() 
{ 
fputs($this->sock, "\r\n.\r\n"); 
$this->smtp_debug(". [EOM]\n"); 
return $this->smtp_ok(); 
} 
function smtp_ok() 
{ 
$response = str_replace("\r\n", "", fgets($this->sock, 512)); 
$this->smtp_debug($response."\n"); 
if (!ereg("^[23]", $response)) 
{ 
fputs($this->sock, "QUIT\r\n"); 
fgets($this->sock, 512); 
$this->log_write("Error: Remote host returned \"".$response."\"\n"); 
return FALSE; 
} 
return TRUE; 
} 
function smtp_putcmd($cmd, $arg = "") 
{ 
if ($arg != "") 
{ 
if($cmd=="") 
{ 
$cmd = $arg; 
} 
else 
{ 
$cmd = $cmd." ".$arg; 
} 
} 
fputs($this->sock, $cmd."\r\n"); 
$this->smtp_debug("> ".$cmd."\n"); 
return $this->smtp_ok(); 
} 
function smtp_error($string) 
{ 
$this->log_write("Error: Error occurred while ".$string.".\n"); 
return FALSE; 
} 
function log_write($message) 
{ 
$this->smtp_debug($message); 
if ($this->log_file == "") 
{ 
return TRUE; 
} 
$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message; 
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) 
{ 
$this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n"); 
return FALSE;; 
} 
flock($fp, LOCK_EX); 
fputs($fp, $message); 
fclose($fp); 
return TRUE; 
} 
function strip_comment($address) 
{ 
$comment = "\([^()]*\)"; 
while (ereg($comment, $address)) 
{ 
$address = ereg_replace($comment, "", $address); 
} 
return $address; 
} 
function get_address($address) 
{ 
$address = ereg_replace("([ \t\r\n])+", "", $address); 
$address = ereg_replace("^.*<(.+)>.*$", "\1", $address); 
return $address; 
} 
function smtp_debug($message) 
{ 
if ($this->debug) 
{ 
//echo $message; 
} 
} 
} 
?>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP4实际应用经验篇(5)
Oct 09 PHP
一篇入门的php Class 文章
Apr 04 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP whois查询类定义与用法示例
Apr 03 #PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 #PHP
PHP反射实际应用示例
Apr 03 #PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 #PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 #PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 #PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 #PHP
You might like
松下Panasonic RF-B65电路分析
2021/03/02 无线电
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
浅谈php7的重大新特性
2015/10/23 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
python解析xml文件实例分析
2015/05/27 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python中的协程深入理解
2019/06/10 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python实现websocket的客户端压力测试
2019/06/25 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
python对一个数向上取整的实例方法
2020/06/18 Python
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
论文指导教师评语
2014/04/28 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
React forwardRef的使用方法及注意点
2021/06/13 Javascript
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript