search
Homephp教程PHP源码使用PHP发送邮件的两种方法

一、使用PHP内置的mail()函数

看了一下手册,就直接开始写代码了,如下

<?php
    $to = "test@163.com"; //收件人  
    $subject = "Test"; //主题  
    $message = "This is a test mail!"; //正文  
    mail($to,$subject,$message); 
?>

结果就直接报错,如下:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() inD:/www/Zend/email/email.php on line 10

看来本地需要有SMTP服务器,那就使用别人的试试吧,又改了下代码:

<?php  
    $to = "test@163.com";//收件人  
    $subject = "Test";//邮件主题  
    $message = "This is a test mail!";//邮件正文  
    ini_set(&#39;SMTP&#39;,&#39;smtp.163.com&#39;);//发件SMTP服务器  
    ini_set(&#39;smtp_port&#39;,25);//发件SMTP服务器端口  
    ini_set(&#39;sendmail_from&#39;,"admin@163.com");//发件人邮箱  
    mail($to,$subject,$message);

结果还是错误:

Warning: mail() [function.mail]: SMTP server response: 553 authentication is required,smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php on line 9 

看来是需要验证信息,怎么写验证信息呢?在哪里配置呢?上网找了半天也没找出个所以然,最后看了别人一些技术文章后得出结论(由于对SMTP邮件什么的不是非常了解,所以也不知道这个结论是否是正确的):使用mail()函数发送邮件就必须要有一台无需SMTP验证就可以发信的邮件服务器。但现在的SMTP邮件服务器基本上都是需要验证的,所以要想使用它发邮件就只能自己在本地搭一个不需要验证的SMTP服务器。这就比较麻烦了,有兴趣的同学可以自己试试搭一个,用windows自带的IIS就可以,或者从网上下载其他的SMTP服务器软件。

 

结论:使用mail()函数发送邮件,就必须要有一台不需要验证的SMTP服务器。这样的话配置工作会多一点,但是使用的时候就比较省事了,几行代码就可以。

二、使用封装SMTP协议的邮件类

 

这种方法就比较常见了,尤其对于广大自己没有服务器,从网上购买虚拟主机的同学,

第一种方法不现实,所以还是自己使用SMTP协议来发送邮件吧。

不过要完成这项工作的话,就需要你对SMTP协议有一定的了解,喜欢事必躬亲的同学可以自己动手写一个,喜欢拿来主义的同学就可以从网上下载了,有很多。

不过我比较推荐使用PEAR扩展中的Mail类,功能强大:可以支持纯文本、HTML格式的邮件;各字段都可设置编码,正确配置不会出现中文乱码情况;可以支持附件等等。

在服务器可以使用 pear install Mail 命令快速安装,没有足够服务器权限的同学也可以直接下载类的PHP源码包含进来就可以了。

注:Mail类依赖  Net/SMTP.php  和 Mail/mime.php ,要一块下载,使用时一块包含进来。

详细安装方法可以在官网查看,http://pear.php.net/package/Mail

下面我举例说明一下在Mail类发送邮件的方法吧,网上其他SMTP邮件类使用方法一块也类似,可以参考:

<?php    
// Pear Mail 扩展  
require_once(&#39;Mail.php&#39;);  
require_once(&#39;Mail/mime.php&#39;);  
require_once(&#39;Net/SMTP.php&#39;);   
$smtpinfo = array();  
$smtpinfo["host"] = "smtp.163.com";//SMTP服务器  
$smtpinfo["port"] = "25"; //SMTP服务器端口  
$smtpinfo["username"] = "username@163.com"; //发件人邮箱
$smtpinfo["password"] = "password";//发件人邮箱密码  
$smtpinfo["timeout"] = 10;//网络超时时间,秒 
$smtpinfo["auth"] = true;//登录验证
//$smtpinfo["debug"] = true;//调试模式
// 收件人列表  
$mailAddr = array(&#39;receiver@163.com&#39;);    
// 发件人显示信息  
$from = "Name <username@163.com>";   
// 收件人显示信息  
$to = implode(&#39;,&#39;,$mailAddr);  
// 邮件标题  
$subject = "这是一封测试邮件";  
// 邮件正文  
$content = "<h3>随便写点什么</h3>";   
// 邮件正文类型,格式和编码  
$contentType = "text/html; charset=utf-8";    
//换行符号 Linux: \n  Windows: \r\n  
$crlf = "\n";  
$mime = new Mail_mime($crlf);  
$mime->setHTMLBody($content);  
  
$param[&#39;text_charset&#39;] = &#39;utf-8&#39;;  
$param[&#39;html_charset&#39;] = &#39;utf-8&#39;;  
$param[&#39;head_charset&#39;] = &#39;utf-8&#39;;  
$body = $mime->get($param);  
  
$headers = array();  
$headers["From"] = $from;  
$headers["To"] = $to;  
$headers["Subject"] = $subject;  
$headers["Content-Type"] = $contentType;  
$headers = $mime->headers($headers);  
$smtp =& Mail::factory("smtp", $smtpinfo);  
 
$mail = $smtp->send($mailAddr, $headers, $body);  
$smtp->disconnect();  
  
if (PEAR::isError($mail)) {  
    //发送失败  
    echo &#39;Email sending failed: &#39; . $mail->getMessage()."\n";  
}  
else{  
    //发送成功  
    echo "success!\n";  
}  
?>

如果从网上找的SMTP类都是高度封装的,所以使用起来比上面会更简单,但使用方法都是比较相似的。


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools