phpmailer发送邮件代码

 代码如下 复制代码

function smtp_mail ($sendto_email,$subject,$body) {
global $mailconfig,$_cfg;
$mail = new phpmailer(); 
$mail->issmtp();
$mail->host = $mailconfig['smtps教程ervers'];//smtp servers 
$mail->smtpauth = true;// 启用smtp验证功能
$mail->username = $mailconfig['smtpusername'];
$mail->password = $mailconfig['smtppassword'];
$mail->from =$mailconfig['smtpfrom'];
$mail->fromname =$_cfg['site_name'];
$mail->charset = "gb2312";
$mail->encoding = "base64";
$mail->addaddress($sendto_email,"");//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是addaddress("收件人email","收件人姓名")
$mail->addreplyto($mailconfig['addreplyto'],"");//增加回复标签addreplyto
$mail->ishtml(true);
$mail->subject = $subject;
$mail->body =$body;
$mail->altbody ="text/html";//该属性的设置是在邮件正文不支持html的备用显示
if(!$mail->send()) 
{
return false;
//echo "邮件发送有误 <p>"; 
//echo "邮件错误信息: " . $mail->errorinfo;

else {
return true;
}
}
方法二

<?php
class email {
//---设置全局变量
var $mailto = ""; // 收件人
var $mailcc = ""; // 抄送
var $mailbcc = ""; // 秘密抄送
var $mailfrom = ""; // 发件人
var $mailsubject = ""; // 主题
var $mailtext = ""; // 文本格式的信件主体
var $mailhtml = ""; // html格式的信件主体
var $mailattachments = ""; // 附件
/* 函数setto($inaddress) :用于处理邮件的地址 参数 $inaddress
为包涵一个或多个字串,email地址变量,使用逗号来分割多个邮件地址
默认返回值为true
**********************************************************/
function setto($inaddress){
//--用explode()函数根据","对邮件地址进行分割
$addressarray = explode( ",",$inaddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$icheckemail($addressarray[$i])==false) return false; }
//--所有合法的email地址存入数组中
$this->mailto = implode($addressarray, ",");
return true; }
/**************************************************
函数 setcc($inaddress) 设置抄送人邮件地址
参数 $inaddress 为包涵一个或多个邮件地址的字串,email地址变量,
使用逗号来分割多个邮件地址 默认返回值为true
**************************************************************/
function setcc($inaddress){
//--用explode()函数根据","对邮件地址进行分割
$addressarray = explode( ",",$inaddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$icheckemail($addressarray[$i])==false) return false; }
//--所有合法的email地址存入数组中
$this->mailcc = implode($addressarray, ",");
return true; }
/***************************************************
函数setbcc($inaddress) 设置秘密抄送地址 参数 $inaddress 为包涵一个或多
个邮件地址的字串,email地址变量,使用逗号来分割多个邮件地址 默认返回值为
true
******************************************/
function setbcc($inaddress){
//--用explode()函数根据","对邮件地址进行分割
$addressarray = explode( ",",$inaddress);
//--通过循环对邮件地址的合法性进行检查
for($i=0;$i<count($addressarray);$i++)
{ if($this->checkemail($addressarray[$i])==false)
return false;
}
//--所有合法的email地址存入数组中
$this->mailbcc = implode($addressarray, ",");
return true;
}
/*****************************************************************
函数setfrom($inaddress):设置发件人地址 参数 $inaddress 为包涵邮件
地址的字串默认返回值为true
***************************************/
function setfrom($inaddress){
if($this->checkemail($inaddress)){
$this->mailfrom = $inaddress;
return true;
} return false; }
/**********************
函数 setsubject($insubject) 用于设置邮件主题参数$insubject为字串,
默认返回的是true
*******************************************/
function setsubject($insubject){
if(strlen(trim($insubject)) > 0){
$this->mailsubject = ereg_replace( "n", "",$insubject);
return true; }
return false; }
/****************************************************
函数settext($intext) 设置文本格式的邮件主体参数 $intext 为文本内容默
认返回值为true
****************************************/
function settext($intext){
if(strlen(trim($intext)) > 0){
$this->mailtext = $intext;
return true; }
return false;
}
/**********************************
函数sethtml($inhtml) 设置html格式的邮件主体参数$inhtml为html格式,
默认返回值为true
************************************/
function sethtml($inhtml){
if(strlen(trim($inhtml)) > 0){
$this->mailhtml = $inhtml;
return true; }
return false; }
/**********************
函数 setattachments($inattachments) 设置邮件的附件 参数$inattachments
为一个包涵目录的字串,也可以包涵多个文件用逗号进行分割 默认返回值为true
*******************************************/
function setattachments($inattachments){
if(strlen(trim($inattachments)) > 0){
$this->mailattachments = $inattachments;
return true; }
return false; }
/*********************************
函数 checkemail($inaddress) :这个函数我们前面已经调用过了,主要就是
用于检查email地址的合法性
*****************************************/
function checkemail($inaddress){
return (ereg( "^[^@ ]+@([a-za-z0-9-]+.)+([a-za-z0-9-]{2}|net|com|gov|mil|org|edu|int)$",$inaddress));
}
/*************************************************
函数loadtemplate($infilelocation,$inhash,$informat) 读取临时文件并且
替换无用的信息参数$infilelocation用于定位文件的目录
$inhash 由于存储临时的值 $informat 由于放置邮件主体
***********************************************************/
function loadtemplate($infilelocation,$inhash,$informat){
/* 比如邮件内有如下内容: dear ~!username~,
your address is ~!useraddress~ */
//--其中"~!"为起始标志"~"为结束标志
$templatedelim = "~";
$templatenamestart = "!";
//--找出这些地方并把他们替换掉
$templatelineout = ""; //--打开临时文件
if($templatefile = fopen($infilelocation, "r")){
while(!feof($templatefile)){
$templateline = fgets($templatefile,1000);
$templatelinearray = explode($templatedelim,$templateline);
for( $i=0; $i<count($templatelinearray);$i++){
//--寻找起始位置
if(strcspn($templatelinearray[$i],$templatenamestart)==0){
//--替换相应的值
$hashname = substr($templatelinearray[$i],1);
//--替换相应的值
$templatelinearray[$i] = ereg_replace($hashname,(string)$inhash[$hashname],$hashname);
}
}
//--输出字符数组并叠加
$templatelineout .= implode($templatelinearray, "");
} //--关闭文件fclose($templatefile);
//--设置主体格式(文本或html)
if( strtoupper($informat)== "text" )
return($this->settext($templatelineout));
else if( strtoupper($informat)== "html" )
return($this->sethtml($templatelineout));
} return false;
}
/*****************************************
函数 getrandomboundary($offset) 返回一个随机的边界值
参数 $offset 为整数 – 用于多管道的调用 返回一个md5()编码的字串
****************************************/
function getrandomboundary($offset = 0){
//--随机数生成
srand(time()+$offset);
//--返回 md5 编码的32位 字符长度的字串
return ( "----".(md5(rand()))); }
/********************************************
函数: getcontenttype($infilename)用于判断附件的类型
**********************************************/
function getcontenttype($infilename){
//--去除路径
$infilename = basename($infilename);
//--去除没有扩展名的文件
if(strrchr($infilename, ".") == false){
return "application/octet-stream";
}
//--提区扩展名并进行判断
$extension = strrchr($infilename, ".");
switch($extension){
case ".gif": return "image/gif";
case ".gz": return "application/x-gzip";
case ".htm": return "text/html";
case ".html": return "text/html";
case ".jpg": return "image/jpeg";
case ".tar": return "application/x-tar";
case ".txt": return "text/plain";
case ".zip": return "application/zip";
default: return "application/octet-stream";
}
return "application/octet-stream";
}
/**********************************************
函数formattextheader把文本内容加上text的文件头
*****************************************************/
function formattextheader(){ $outtextheader = "";
$outtextheader .= "content-type: text/plain;
charset=us-asciin";
$outtextheader .= "content-transfer-encoding: 7bitnn";
$outtextheader .= $this->mailtext. "n";
return $outtextheader;
} /************************************************
函数formathtmlheader()把邮件主体内容加上html的文件头
******************************************/
function formathtmlheader(){
$outhtmlheader = "";
$outhtmlheader .= "content-type: text/html;
charset=us-asciin";
$outhtmlheader .= "content-transfer-encoding: 7bitnn";
$outhtmlheader .= $this->mailhtml. "n";
return $outhtmlheader;
}
/**********************************
函数 formatattachmentheader($infilelocation) 把邮件中的附件标识出来
********************************/
function formatattachmentheader($infilelocation){
$outattachmentheader = "";
//--用上面的函数getcontenttype($infilelocation)得出附件类型
$contenttype = $this->getcontenttype($infilelocation);
//--如果附件是文本型则用标准的7位编码
if(ereg( "text",$contenttype)){
$outattachmentheader .= "content-type: ".$contenttype. ";n";
$outattachmentheader .= ' name="'.basename($infilelocation). '"'. "n";
$outattachmentheader .= "content-transfer-encoding: 7bitn";
$outattachmentheader .= "content-disposition: attachment;n";
$outattachmentheader .= ' filename="'.basename($infilelocation). '"'. "nn";
$textfile = fopen($infilelocation, "r");
while(!feof($textfile)){
$outattachmentheader .= fgets($textfile,1000);
}
//--关闭文件 fclose($textfile);
$outattachmentheader .= "n";
}
//--非文本格式则用64位进行编码
else{ $outattachmentheader .= "content-type: ".$contenttype. ";n";
$outattachmentheader .= ' name="'.basename($infilelocation). '"'. "n";
$outattachmentheader .= "content-transfer-encoding: base64n";
$outattachmentheader .= "content-disposition: attachment;n";
$outattachmentheader .= ' filename="'.basename($infilelocation). '"'. "nn";
//--调用外部命令uuencode进行编码
exec( "uuencode -m $infilelocation nothing_out",$returnarray);
for ($i = 1; $i<(count($returnarray)); $i++){
$outattachmentheader .= $returnarray[$i]. "n";
}
} return $outattachmentheader;
}
/******************************
函数 send()用于发送邮件,发送成功返回值为true
************************************/
function send(){
//--设置邮件头为空
$mailheader = "";
//--添加抄送人
if($this->mailcc != "")
$mailheader .= "cc: ".$this->mailcc. "n";
//--添加秘密抄送人
if($this->mailbcc != "")
$mailheader .= "bcc: ".$this->mailbcc. "n";
//--添加发件人
if($this->mailfrom != "")
$mailheader .= "from: ".$this->mailfrom. "n";
//---------------------------邮件格式------------------------------
//--文本格式
if($this->mailtext != "" && $this->mailhtml == "" && $this->mailattachments == ""){
return mail($this->mailto,$this->mailsubject,$this->mailtext,$mailheader);
}
//--html或text格式
else if($this->mailtext != "" && $this->mailhtml != "" && $this->mailattachments == ""){
$bodyboundary = $this->getrandomboundary();
$textheader = $this->formattextheader();
$htmlheader = $this->formathtmlheader();
//--设置 mime-版本
$mailheader .= "mime-version: 1.0n";
$mailheader .= "content-type: multipart/alternative;n";
$mailheader .= ' boundary="'.$bodyboundary. '"';
$mailheader .= "nnn";
//--添加邮件主体和边界
$mailheader .= "--".$bodyboundary. "n";
$mailheader .= $textheader;
$mailheader .= "--".$bodyboundary. "n";
//--添加html标签
$mailheader .= $htmlheader;
$mailheader .= "n--".$bodyboundary. "--";
//--发送邮件
return mail($this->mailto,$this->mailsubject, "",$mailheader);
}
//--文本加html加附件
else if($this->mailtext != "" && $this->mailhtml != "" && $this->mailattachments != ""){
$attachmentboundary = $this->getrandomboundary();
$mailheader .= "content-type: multipart/mixed;n";
$mailheader .= ' boundary="'.$attachmentboundary. '"'. "nn";
$mailheader .= "this is a multi-part message in mime format.n";
$mailheader .= "--".$attachmentboundary. "n";
$bodyboundary = $this->getrandomboundary(1);
$textheader = $this->formattextheader();
$htmlheader = $this->formathtmlheader();
$mailheader .= "mime-version: 1.0n";
$mailheader .= "content-type: multipart/alternative;n";
$mailheader .= ' boundary="'.$bodyboundary. '"';
$mailheader .= "nnn";
$mailheader .= "--".$bodyboundary. "n";
$mailheader .= $textheader;
$mailheader .= "--".$bodyboundary. "n";
$mailheader .= $htmlheader;
$mailheader .= "n--".$bodyboundary. "--";
//--获取附件值
$attachmentarray = explode( ",",$this->mailattachments);
//--根据附件的个数进行循环
for($i=0;$i<count($attachmentarray);$i++){
//--分割 $mailheader .= "n--".$attachmentboundary. "n";
//--附件信息
$mailheader .= $this->formatattachmentheader($attachmentarray[$i]);
}
$mailheader .= "--".$attachmentboundary. "--";
return mail($this->mailto,$this->mailsubject, "",$mailheader);
}
return false;
}
}
?>

使用方法:
<?

 代码如下 复制代码

include "email.class"

$mail->setto("a@a.com"); //收件人
$mail-> setcc("b@b.com,[url=mailto:c@c.com]c@c.com[/url]"); //抄送
$mail-> setcc("d@b.com,[url=mailto:e@c.com]e@c.com[/url]"); //秘密抄送
$mail->setfrom("[url=mailto:f@f.com]f@f.com[/url]");//发件人
$mail->setsubject("主题") ; //主题
$mail->settext("文本格式") ;//发送文本格式也可以是变量
$mail->sethtml("html格式") ;//发送html格式也可以是变量
$mail->setattachments("c:a.jpg") ;//添加附件,需表明路径
$mail->send(); //发送邮件

?>

时间: 2024-09-10 07:34:04

phpmailer发送邮件代码的相关文章

PHPMailer发送邮件报错Msg:stream_socket_enable_crypto():

我的PHPMailer发送邮件代码  代码如下 复制代码 header("Content-type:text/html;charset=utf-8"); include('phpmailer/class.phpmailer.php'); include('phpmailer/class.smtp.php'); $mail = new PHPMailer();     $mail->IsSMTP();                                      //

thinkphp使用phpmailer发送邮件的方法_php技巧

本文实例讲述了thinkphp使用phpmailer发送邮件的方法.分享给大家供大家参考.具体分析如下: phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,感兴趣的朋友可以参考一下. phpmailer发送邮件功能很强大,今天真正的体验一下,这里先简单说一下配置,本人是在thinkphp中使用的. 配置步骤: 1.后台配置发送邮件类,位置admin/common/common.php中,代码如下: 复制代码 代码如下

php使用phpmailer发送邮件实例解析_Android

本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用 这是163邮箱的   因为不是企业邮箱填写的账号是163的账号,但是密码是授权码 授权码的获取方式为: 然后   然后在这个页面向下看可以看到  接下来就是执行代码了  //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告 include("PHP/class.smtp.php"); include("PHP/class.phpmailer.

phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法_php技巧

很多人在使用phpmailer发送邮件之后,都想知道对方是否阅读了邮件?通常来说,这个我们是无法知道的,那么有没有办法呢? 对于这个问题有一个简单的解决方法,我们知道,邮件内容可以以html 的形式发送,我们可以在内容中插入图片,那么关键就在这个图片里面了. 假设我们的邮件内容是这样的: 文件content.php代码如下: <table width="555" height="50" border="0" align="cent

PHPMailer使用教程(PHPMailer发送邮件实例分析)_php实例

php虽然提供了mail()函数,但并不好用,而PHPMailer是一个不错的邮件发送工具,使用起来也是非常简单! 使用PHPMailer发送邮件: 复制代码 代码如下: <?php header("content-type:text/html;charset=utf-8"); ini_set("magic_quotes_runtime",0); require 'class.phpmailer.php'; try { $mail = new PHPMaile

使用PHPMailer发送邮件实例

本文实例为大家分享了PHPMailer发送邮件的具体代码,供大家参考,具体内容如下 PHPMailer类源代码下载地址:https://github.com/PHPMailer/PHPMailer <?php /* to: 邮件接收地址 subject: 邮件主题 body: 邮件内容 attachpath:附件地址 cc: 邮件抄送地址 bcc: 邮件暗抄送地址 */ function send_mail($to, $subject="", $body=""

使用 PHPMAILER 发送邮件实例

  <?php include ('class/class.phpmailer.php'); $config = array( 'host'=>'smtp.163.com', 'port'=>'25', 'user'=>'***', 'passwd'=>'****', 'from'=>'juva_zz@163.com', 'fromname'=>'郑州', ); $subject = 'this is a test mail'; $body = '<tabl

php发送邮件代码-用mail

这是一款免费的php教程发送邮件代码-用mail哦,是基础php自身的上传函数 <html> <head> <title>发信给网管</title> </head> <body> <h2 align="center">网管收信</h2><br> <hr><br> <center> <form action="mail.php&q

PHP借助phpmailer发送邮件_php技巧

本地没有发邮件的服务器,借助现成的SMTP服务器发送邮件是个不错的选择,这里使用到的工具是phpmailer ( Version 5.2.0),SMTP服务器就选gmail和163. 1. 使用gmail发送的脚本 include("class.phpmailer.php"); include("class.smtp.php"); //获取一个外部文件的内容 $mail = new PHPMailer(); $body = file_get_contents('co