使用PHP发送邮件的两种方法
使用PHP发送邮件的两种方法
今天研究了一下使用PHP来发送电子邮件,总结了一下,有这么两种方法:
一、使用PHP内置的mail()函数
看了一下手册,就直接开始写代码了,如下
$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() in D:/www/Zend/email/email.php on line 10
看来本地需要有SMTP服务器,那就使用别人的试试吧,又改了下代码
$to = "test@163.com";
$subject = "Test";
$message = "This is a test mail!";
ini_set('SMTP','smtp.163.com');
ini_set('smtp_port',25);
ini_set('sendmail_from',"admin@163.com");
mail($to,$subject,$message);
结果还是错误:
Warning: mail() [function.mail]: SMTP server response: 553 authentication is required,smtp2,DNGowKD7v5BTDo9NnplVBA–.1171S2 1301220947 in D:/www/Zend/email/email.php on line 9
看来是需要验证信息,怎么写验证信息呢?在哪里配置呢?上网找了半天也没找出个所以然,最后看了别人一些技术文章后得出结论(由于对SMTP邮件什么的不是非常了解,所以也不知道这个结论是否是正确的):使用mail()函数发送邮件就必须要有一台无需SMTP验证就可以发信的邮件服务器。但现在的SMTP邮件服务器基本上都是需要验证的,所以要想使用它发邮件就只能自己在本地搭一个不需要验证的SMTP服务器。这就比较麻烦了,我是不想整,有兴趣的同学可以自己试试搭一个,用windows自带的IIS就可以,或者从网上下载其他的SMTP服务器软件,我就不多说。
结论:使用mail()函数发送邮件,就必须要有一台不需要验证的SMTP服务器。
这样的话配置工作会多一点,但是使用的时候就比较省事了,几行代码就可以。
二、使用SMTP邮件类
这种方法就比较常见了,尤其对于广大自己没有服务器,从网上购买虚拟主机的同学,第一种方法不现实,所以还是自己使用SMTP协议来发送邮件吧。不过要完成这项工作的话,就需要你对SMTP协议有一定的了解,喜欢事必躬亲的同学可以自己动手写一个,喜欢拿来主义的同学就可以从网上下载了,有很多,自己找吧。
下面我举例说明一下在CodeIgniter里面如何使用它内置的邮件类发送邮件吧
$this->load->library('email');
$to = "aa@bb.cc";
$subject = "test";
$message = "hello!";
$config["protocol"] = "smtp";
$config["smtp_host"] = "smtp.163.com";
$config["smtp_user"] = "username@163.com";
$config["smtp_pass"] = "password";
$config["mailtype"] = "html";
$config["validate"] = true;
$config["priority"] = 3;
$config["crlf"] = "/r/n";
$config["smtp_port"] = 25;
$config["charset"] = "utf-8";
$config["wordwrap"] = TRUE;
$this->email->initialize($config);
$this->email->from('xxxx@163.com', 'xxxx');
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message);
$this->email->send();
由于这些类都是高度封装的,所以使用起来也很简单。
结论:这种方式发送邮件无需装任何软件,但是需要你写更多的代码,而且要对SMTP比较熟悉。
但是如果你不自己写,而是直接使用别人写好的现成的代码的话,那这种方法无疑是最省事的:
不需要自己搭建SMTP服务器,也不需要写很多的代码。
使用PHP发送邮件的两种方法的更多相关文章
- 【转】【Asp.Net】Asp.net发送邮件的两种方法小结
这几天看了一下Asp.net发送邮件方面的东西,记得之前的IIS6上有SMTP服务器,可以直接利用这个进行邮件发送,现在的开发环境是Windows 7,找了半天没有找到,到网络上查了才知道原来wind ...
- PHP发送邮件的两种方式
1.用SMTP方式发送邮件.引入phpmailer文件包,然后在文件中 <?php require_once("phpmailer/class.phpmailer.php") ...
- Java执行shell脚本并返回结果两种方法的完整代码
Java执行shell脚本并返回结果两种方法的完整代码 简单的是直接传入String字符串,这种不能执行echo 或者需要调用其他进程的命令(比如调用postfix发送邮件命令就不起作用) 执行复杂的 ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- android 之 启动画面的两种方法
现在,当我们打开任意的一个app时,其中的大部分都会显示一个启动界面,展示本公司的logo和当前的版本,有的则直接把广告放到了上面.启动画面的可以分为两种设置方式:一种是两个Activity实现,和一 ...
- [转载]C#读写txt文件的两种方法介绍
C#读写txt文件的两种方法介绍 by 大龙哥 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char ...
- php如何防止图片盗用/盗链的两种方法(转)
图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服 ...
- WPF程序将DLL嵌入到EXE的两种方法
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...
- MongoDB实现分页(两种方法)
1.插入实验数据 偷懒用下samus,100条. ; i < ; i++) { Document doc = new Document(); doc["ID"] = i; d ...
随机推荐
- Oracle 性能查看
http://blog.chinaunix.net/uid-20784775-id-373968.html
- nginx增加ssl服务方法
1.将申请到的ssl加密证书文件拷贝到nginx的conf目录下 如:server.pem.server.key 2.vim nginx.conf 例子: server { listen 443 ss ...
- poj 2245 水题
求组合数,dfs即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cst ...
- POJ2735/Gym 100650E Reliable Nets dfs
Problem E: Reliable NetsYou’re in charge of designing a campus network between buildings and are ver ...
- ServletContext图解
servlet之间共享数据资源!
- ClassPathXmlApplicationContext的启动
Spring将ApplicationContext启动的全过程,refresh函数中包含了几乎ApplicationContext中提供的全部功能,而且此函数中逻辑非常清晰明了,很容易分析对应的层次及 ...
- JVM的回收实现
通过一系列的称为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用 ...
- js:数据结构笔记6--字典
Dictionary类的基础是数组不是对象:字典的主要用途是通过键取值: 基本定义: function Dictionary() { this.dataStore = new Array(); thi ...
- easyui提交表单数据的时候如何防止二次提交
在前端提交数据的时候有时候可能会由于网络延迟等原因,我们在等待的时候会多次点击保存按钮,这可能会导致我们一次输入的数据多次提交,导致数据重复.最近在做项目的时候碰到了这个问题,先说一点,这个问题的解决 ...
- HDU2457 DNA repair(AC自动机+DP)
题目一串DNA最少需要修改几个基因使其不包含一些致病DNA片段. 这道题应该是AC自动机+DP的入门题了,有POJ2778基础不难写出来. dp[i][j]表示原DNA前i位(在AC自动机上转移i步) ...