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 相关文章推荐
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
PHP 第一节 php简介
Apr 28 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 07 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 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 5.4 你必须要知道的
2013/08/07 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP curl使用实例
2015/07/02 PHP
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
python 实现控制鼠标键盘
2020/11/27 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
学习全国两会精神心得体会范文
2014/03/17 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
行政专员求职信范文
2014/05/03 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python