PHP中常用的发送邮件方法

 更新时间:2016年11月25日 17:00  点击:1734
下面总结了三种在php实现邮件发送的实现代码,包括有phpmailer,mail()函数,JMail()这三种哦,有需要的朋友可参考一下。

利用php mail函数发送

使用mail()函数发送邮件,就必须要有一台不需要验证的SMTP服务器。

这样的话配置工作会多一点,但是使用的时候就比较省事了,几行代码就可以

 代码如下 复制代码

$to = "test@163.com";
$subject = "Test";
$message = "This is a test mail!";
mail($to,$subject,$message);

JMail发送邮件

账号必须有smtp发信权限,最好设置$jmail->silent=true,不让jmail自行抛出错误信息。
常用的有网易、sogou、QQ、GMail邮箱。

 代码如下 复制代码

<?php 
$jmail = new COM('JMail.Message')   o&#114; die('无法调用Jmail组件'); 
$jmail->silent = true; //屏蔽例外错误 
$jmail->charset = 'gb2312'; //否则中文会乱码 
$jmail->From = 'web535000@163.com'; //这里理论上是可以不与发件人地址相同的,但用163的试了几次都不行,改成一样的就可以了 
$jmail->FromName = 'BoboTest'; 
$jmail->AddRecipient('abc1@163.com'); //可添加多个邮件接受者 
//$jmail->AddRecipient('abc2@163.com'); 
//$jmail->AddRecipient('abc3@163.com'); 
$jmail->Subject = 'email test.'; 
$jmail->Body = 'this is test email.';  
$jmail->MailServerUserName = 'web535000@163.com'; //发信邮件账号 
$jmail->MailServerPassword = '123456'; //账户的密码 
try{ 
    $email = $jmail->Send('smtp.163.com'); 
    if($email) echo '发送成功'; 
    else echo '发送失败'; 
} catch (Exception $e){ 
    echo $e->getMessage(); 

?> 

发信账号必须有smtp发信权限,对于网易的邮箱,06年后注册的新邮箱好像不行,早期的倒可以。
还有,最好设置$jmail->silent=true,不让jmail自行抛出错误信息,在设置正常的时候,频繁发信会出现一些错误,据我估计应该是发信服务器设置了发信时间间隔。

phpmailer发送邮件,这个是相当简单的也是常用的

 代码如下 复制代码


function postmail_jiucool_com($to,$subject = "",$body = ""){
    //Author:Jiucool WebSite: http://www.jiucool.com
    //$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文
    //error_reporting(E_ALL);
    error_reporting(E_STRICT);
    date_default_timezone_set("Asia/Shanghai");//设定时区东八区
    require_once('class.phpmailer.php');
    include("class.smtp.php");
    $mail             = new PHPMailer(); //new一个PHPMailer对象出来
    $body             = eregi_replace("[]",'',$body); //对邮件内容进行必要的过滤
    $mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
    $mail->IsSMTP(); // 设定使用SMTP服务
    $mail->SMTPDebug  = 1;                     // 启用SMTP调试功能
                                           // 1 = errors and messages
                                           // 2 = messages only
    $mail->SMTPAuth   = true;                  // 启用 SMTP 验证功能
    $mail->SMTPSecure = "ssl";                 // 安全协议
    $mail->Host       = "smtp.googlemail.com";      // SMTP 服务器
    $mail->Port       = 465;                   // SMTP服务器的端口号
    $mail->Username   = "SMTP服务器用户名";  // SMTP服务器用户名
    $mail->Password   = "SMTP服务器密码";            // SMTP服务器密码
    $mail->SetFrom('发件人地址,如admin#jiucool.com #换成@', '发件人名称');
    $mail->AddReplyTo("邮件回复地址,如admin#jiucool.com #换成@","邮件回复人的名称");
    $mail->Subject    = $subject;
    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer! - From www.111cn.net"; // optional, comment out and test
    $mail->MsgHTML($body);
    $address = $to;
    $mail->AddAddress($address, "收件人名称");
    //$mail->AddAttachment("images/phpmailer.gif");      // attachment
    //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!恭喜,邮件发送成功!";
        }
    }

PHPMailer的主要功能特点:

1.支持邮件 s/mime加密的数字签名
2.支持邮件多个 TOs, CCs, BCCs and REPLY-TOs
3.可以工作在任何服务器平台,所以不用担心WIN平台无法发送邮件的问题的
4.支持文本/HTML格式邮件
5.可以嵌入image图像
6.对于邮件客户端不支持HTML阅读的进行支持
7.功能强大的发送邮件调试功能debug
8.自定义邮件header
9.冗余SMTP服务器支持
10.支持8bit, base64, binary, and quoted-printable 编码
11.文字自动换行
12.支持多附件发送功能
13.支持SMTP服务器验证功能
14.在Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平台测试成功
15.提供的下载文件中,包括内容详细的说明文档及示例说明,所以不用担心难于上手的问题!
16.PHPMailer 非常小巧、简单、方便、快捷

首先,先到http://phpmailer.sourceforge.net/这个地址去下载最新的PHPMailer的包(PHPMailer方法必须使用这个包)。   下载完成后解压到相应的目录。可以看到解压后的文件夹里面的class.phpmailer.php(调用PHPMailer需要包含这个文件)
 代码如下 复制代码
<?php   
require("phpmailer/class.phpmailer.php");   
function smtp_mail( $sendto_email, $subject, $body, $extra_hdrs, $user_name){   
    $mail = new PHPMailer();   
    $mail->IsSMTP();                  // send via SMTP   
    $mail->Host = "smtp.163.com";   // SMTP servers   
    $mail->SMTPAuth = true;           // turn on SMTP authentication   
    $mail->Username = "xuchao842363331";     // SMTP username  注意:普通邮件认证不需要加 @域名  这里是我的163邮箱
    $mail->Password = "password"; // SMTP password    在这里输入邮箱的密码
    $mail->From = "xuchao842363331@163.com";      // 发件人邮箱   
    $mail->FromName =  "管理员";  // 发件人   
 
    $mail->CharSet = "UTF-8";   // 这里指定字符集!    指定UTF-8后邮件的标题和发件人等等不会乱码,如果是GB2312标题会乱码
    $mail->Encoding = "base64";   
    $mail->AddAddress($sendto_email,"username");  // 收件人邮箱和姓名   
    $mail->AddReplyTo("yourmail@yourdomain.com","yourdomain.com");   
    //$mail->WordWrap = 50; // set word wrap 换行字数   
    //$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件   
    //$mail->AddAttachment("/tmp/image.jpg", "new.jpg");   
    //$mail->IsHTML(true);  // send as HTML   
    // 邮件主题   
    $mail->Subject = $subject;   
    // 邮件内容   
    $mail->Body = "hello!PHPMailer";                                                                         
    //$mail->AltBody ="text/html";   
    if(!$mail->Send())   
    {   
        echo "error <p>";   
        echo "error: " . $mail->ErrorInfo;   
        exit;   
    }   
    else {   
        echo"success!";
    }   
}   
// 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名)     
?>

里要说明一下:当字符集指定为GB2312的时候标题会乱码,这里指定为UTF-8不会出现乱码。

  其实,PHPMailer还有很多功能,比如可以添加附件等等,这里就不再演示了。 

  这样在你需要用邮件功能的时候调用这个函数就可以了:

 

 代码如下 复制代码
<?php    
require("mail.php");    
  
smtp_mail("842363331@qq.com", "催还", "", "", "username");   
 
?>
本文章总结了php中不转义中文字符的 json 编码的方法,有需要的朋友可参考一下。

虽说最新的 PHP 5.4 已经良好支持 JSON 中文编码,即通过 JSON_UNESCAPED_UNICODE 参数,例如:

json_encode("中文", JSON_UNESCAPED_UNICODE)对于早前 PHP 版本,处理不转义中文字符的 json 编码


PHP 和 JavaScript 交互其实很方便,PHP 原生也提供了对 JSON 格式的支持。主要包括 JSON 编码和解码两个函数:

json_endoce: http://cn.php.net/json_encode
json_dedoce: http://cn.php.net/json_decodejson_encode

— 对变量进行 JSON 编码,并返回 value 值的 JSON 形式,例如:

 代码如下 复制代码

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>

以上代码执行后输出:

 代码如下 复制代码

{"a":1,"b":2,"c":3,"d":4,"e":5}

假如要编码的数据源(一般是一个数组),value 中包含中文,经过 json_encode 处理后输出的是 unicode 编码。

 代码如下 复制代码

<?php
$arr = array ('a'=>'芒果小站');
echo json_encode($arr);
?>

以上代码执行后输出:

 代码如下 复制代码
{"a":"u8292u679Cu5C0Fu7AD9"}

PHP 底层已经做了 unicode 处理,如果嫌它不够直观,可以利用 urlencode 和

urldecode

方法绕过这个转码为 unicode 的过程:

 代码如下 复制代码

$arr = array ('a'=>urlencode('芒果小站'));
echo urldecode(json_encode($arr));以上代码执行后输出:

{"a":"芒果小站"}

,这里分享个更完美的方法:

 /**
  * 不转义中文字符的 json 编码方法
  * @param array $arr 待编码数组
  * @return string
  */
 function encode ($arr) {

  $str = json_encode($arr);
  $search = "#\u([0-9a-f]+)#ie";
  $replace = "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))";

  return preg_replace($search, $replace, $str);

 }

本文章介绍了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 = '<table style="background:#dfdfdf"><tr><td>测试内容</td></tr><tr><td>这是内容</td></tr></table>';
$address='379018082@qq.com';
$username='本人';

$mail = new PHPMailer();
$mail->CharSet = 'gb2312';
$mail->IsSMTP();
$mail->Host = $config['host'];
$mail->Port = $config['port'];

$mail->From = $config['from'];
$mail->FromName = $config['fromname'];
$mail->SMTPAuth = true;

$mail->Username = $config['user'];
$mail->Password = $config['passwd'];

$mail->Subject=$subject;
$mail->AltBody="text/html";
$mail->MsgHTML($body);


$mail->AddAddress($address,$username);

if(!$mail->Send())
{
    echo "Mail Error :".$mail->ErrorInfo;
}else
{
    echo "恭喜发送成功!";
}

我们介绍一个php插件来实现发送电子邮件并且还可还有附件的实现方法,这个不需要你怎么配置方法相当简单,可登录第三方法邮件实现发送.
 代码如下 复制代码
require_once('include/PHPMailer/class.phpmailer.php'); //导入PHPMAILER类
$mail = new PHPMailer(); //创建实例
$mail -> CharSet='utf-8'; //设置字符集
$mail -> SetLanguage('ch','include/PHPMailer/language/');  //设置语言类型和语言文件所在目录         
$mail -> IsSMTP(); //使用SMTP方式发送
$mail -> SMTPAuth = true; //设置服务器是否需要SMTP身份验证 
$mail -> Host = SMTP_SERVER; //SMTP 主机地址 
$mail -> Port = SMTP_SERVER_PORT; //SMTP 主机端口
$mail -> From = SMTP_USER_MAIL; //发件人EMAIL地址
$mail -> FromName = 'jasonxu'; //发件人在SMTP主机中的用户名 
$mail -> Username = SMTP_USER_NAME; //发件人的姓名 
$mail -> Password = SMTP_USER_PASS; //发件人在SMTP主机中的密码 
$mail -> Subject = '测试邮件的标题'; //邮件主题 
$mail -> AltBody = 'text/html'; //设置在邮件正文不支持HTML时的备用显示
$mail -> Body = '测试邮件的内容';//邮件内容做成
$mail -> IsHTML(true);  //是否是HTML邮件
$mail -> AddAddress('chinajason2008#gmail.com','jasonxu'); //收件人的地址和姓名 
$mail -> AddReplyTo('chinajason2008#gmail.com','jasonxu'); //收件人回复时回复给的地址和姓名
$mail -> AddAttachment('include/id.csv','att.csv');//附件的路径和附件名称
if(!$mail -> Send()) //发送邮件 
var_dump($mail -> ErrorInfo);  //查看发送的错误信息

 
注意:phpmailer如果添加附件的时候,在附件名称里一定要写明附件的后缀,如果不写明附件后缀,默认的附件后缀会是.txt。
比如$mail -> AddAttachment('include/id.csv','att');//附件的路径和附件名称
如果向上面一样添加附件发送,则最终接到的附件可能是att.txt。
AddAttachment可以设置附件编码方式和附件类型,比如上面的附件添加也可以设置为
$mail -> AddAttachment('include/id.csv','att.csv',"binary","text/comma-separated-values");//附件的路径和附件名称、
附件的编码方式大概有这么几种:支持8bit, base64, binary, and quoted-printable 编码
 
而CSV可接受的MIME Type
· application/octet-stream
· text/comma-separated-values(推荐)
· text/csv
所以,csv格式文件的附件类型可以是上面三种中的任意一种


/*PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:
  *.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
  *.支持多种邮件编码包括:8bit,base64,binary和quoted-printable
  *.支持SMTP验证
  *.支持冗余SMTP服务器
  *.支持带附件的邮件和Html格式的邮件
  *.自定义邮件头
  *.支持在邮件中嵌入图片
  *.调试灵活
  *.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
  *.可运行在任何平台之上
 
phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、富文本内容,上传附件,.....
官方网站:http://phpmailer.worxware.com/
下载地址:http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
*/
 

[!--infotagslink--]

相关文章

  • C# 10个常用特性汇总

    这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
  • NodeJS实现阿里大鱼短信通知发送

    本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20
  • PHP测试成功的邮件发送案例

    mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<&#63;php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
  • c# 实现发送邮件的功能

    这篇文章主要介绍了c# 如何实现发送邮件的功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<&#63;php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
  • PHP测试成功的邮件发送案例

    mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
  • python实现企业微信定时发送文本消息的实例代码

    这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-25
  • c#使用netmail方式发送邮件示例

    这篇文章主要介绍了c#使用netmail方式发送邮件的示例,大家参考使用吧...2020-06-25
  • PHPMailer在SAE上无法发送邮件的解决方法

    PHPMailer在SAE上无法发送邮件怎么回事呢,我们以前在php5.2.7版本中使用了PHPMailer是可以发,但移到sae中发现无法发邮件了,那么此问题如何解决 在SAE上直接用5.2.7...2016-11-25
  • node.js 基于 STMP 协议和 EWS 协议发送邮件

    这篇文章主要介绍了node.js 基于 STMP 协议和 EWS 协议发送邮件的示例,帮助大家更好的理解和使用node.js,感兴趣的朋友可以了解下...2021-02-15
  • 整理几个android后台发送邮件的方法

    本文我们整理了三个android后台发送邮件的方法及示例,第一个是不借助Intent在android后台发送Email,第二个是用在收集应用的异常信息,第三个是分享一个android后台发送邮...2016-09-20
  • 网上找到的两个PHP发送邮件的例子,很不错,贴出来给初学者参考吧(不知道是否有兄弟曾贴过),呵呵(2

    Advanced Example Here we will show the full capabilities of the PHP mail function. PHP Code: <?php echo "<html><body>"; $recipient = "Kris Arndt <karn@nu...2016-11-25
  • Perl中使用MIME::Lite发送邮件实例

    这篇文章主要介绍了Perl中使用MIME::Lite发送邮件实例,本文介绍了使用sendmail方式发送、发送HTML格式邮件、smtp方式发送邮件等内容,需要的朋友可以参考下...2020-06-29
  • PHP利用Jmail组件实现发送邮件

    学过asp的朋友可能知道jmail组件是使用在asp中一个常用的邮箱发送功能,在php中如果想调用jmail功能我们需要使用com组件来操作。 我们先来介绍格式 代码如...2016-11-25
  • phpMailer 发送邮件

    //原创:www.111cn.net 注明:转载说明来处www.111cn.net // 昨天听一网友说用php 里面的mail发邮件发不出去,我想一般都是发不了的,现在大多数据邮件提供商都不准那样了...2016-11-25
  • php中利用curl smtp发送邮件实例

    本文章来介绍人一下关于与我们不同的发送邮件的方法我们来利用php curl stmp来实现邮件的发送程序。 $ telnet 邮箱SMTP服务地址 25 Trying 邮箱服务IP地址......2016-11-25
  • C#编程实现发送邮件的方法(可添加附件)

    这篇文章主要介绍了C#编程实现发送邮件的方法,具备添加附件的功能,涉及C#文件传输及邮件发送的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Python基于httpx模块实现发送请求

    这篇文章主要介绍了Python基于httpx模块实现发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-08
  • 详解php常用数组函数实例

    这篇文章介绍了php中常用的数组与函数,非常具有价值,有兴趣的同学可以参考一下 本文实例总结了php常用数组函数。分享给大家供大家参考,具体如下: 1. array array_mer...2016-12-31