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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
针对初学PHP者的疑难问答(2)
Oct 09 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
php开启openssl的方法
May 15 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
PHP生成器简单实例
May 13 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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
php中的strpos使用示例
2014/02/27 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
理解Python垃圾回收机制
2016/02/12 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
python opencv之SIFT算法示例
2018/02/24 Python
python 文件转成16进制数组的实例
2018/07/09 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
python 读取、写入txt文件的示例
2020/09/27 Python
仓库管理专业个人的自我评价
2013/12/30 职场文书
思想品德自我评价
2014/02/04 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
保护环境倡议书范文
2014/05/13 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
社区活动总结范文
2015/05/07 职场文书
电力培训学习心得体会
2016/01/11 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python