当前位置:  编程技术>php
本页文章导读:
    ▪php中通过curl smtp发送邮件的例子      一、SMTP协议 $ telnet 邮箱SMTP服务地址 25 Trying 邮箱服务IP地址... Connected to 邮箱SMTP服务地址. Escape character is '^]'. exchange邮箱服务器地址 Microsoft ESMTP MAIL Service ready at Sat, 2 Jun 2012 15:02:12 +08.........
    ▪生成某时间段内的从开始月份到结束月份的月份数组的代码      一个用于生成某时间段内的从开始月份到结束月份的月份数组的代码,有需要的朋友可以参考下。   代码如下: <?php /** * 生成某时间段从开始月份到结束月份的月份数组 * @param unknown_t.........
    ▪php的二个函数:生成序列号、字符串替换      这里为大家提供二个函数: 第一个是用来生成序列号。 第二个是用来“加密”部分字符串,稍作修改,即可实现无与伦比的功能,哈---比如达到在找回密码时经常看到的 ********@163.com 这种.........

[1]php中通过curl smtp发送邮件的例子
    来源: 互联网  发布时间: 2013-12-24

一、SMTP协议
$ telnet 邮箱SMTP服务地址 25
Trying 邮箱服务IP地址...
Connected to 邮箱SMTP服务地址.
Escape character is '^]'.
exchange邮箱服务器地址 Microsoft ESMTP MAIL Service ready at Sat, 2 Jun 2012 15:02:12 +0800
EHLO 127.0.0.1
-exchange邮箱服务器地址 Hello [邮箱服务IP地址]
-SIZE
-PIPELINING
-DSN
-ENHANCEDSTATUSCODES
-X-ANONYMOUSTLS
-AUTH NTLM LOGIN
-X-EXPS GSSAPI NTLM
-8BITMIME
-BINARYMIME
-CHUNKING
-XEXCH50
XRDST
AUTH LOGIN
VXNlcm5hbWU6
用户名(base64_encode)
UGFzc3dvcmQ6
密码(base64_encode)
2.7.0 Authentication successful
MAIL FROM:发件箱地址
2.1.0 Sender OK
RCPT TO:收件箱地址
2.1.5 Recipient OK
DATA
Start mail input; end with <CRLF>.<CRLF>
要发送的内容(这里的相关的规范有很多)
.
2.6.0 <0b476f30-3b96-4e3d-84d2-395a96d34000@exchange邮箱服务器地址> Queued mail for delivery
QUIT
2.0.0 Service closing transmission channel
Connection closed by foreign host.

二、邮件发送代码
 

代码如下:
<?php
/**
 功能:邮件发送
 url: http://www.
*/
header("content-type:text/html;charset=utf-8");
$smtp = array(
"url" => "邮箱SMTP服务器地址",
"port" => "邮箱SMTP服务器端口", // 一般为25
"username" => "用户名",
"password" => "密码",
"from" => "发件地址",
"to" => "收件地址",
"subject" => "测试一下标题",
"body" => "测试一下内容"
);
$CRLF = "\r\n";
$test = "";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $smtp['url']);
curl_setopt($curl, CURLOPT_PORT, $smtp['port']);
curl_setopt($curl, CURLOPT_TIMEOUT,10);
function inlineCode($str){
$str = trim($str);
return $str?'=?UTF-8?B?'.base64_encode($str).'?= ':'';
}
function buildHeader($headers){
$ret = '';
foreach($headers as $k=>$v){
$ret.=$k.': '.$v."\n";
}
return $ret;
}
//
$header = array(
'Return-path'=>'<'.$smtp['from'].'>',
'Date'=>date('r'),
'From'=> '<'.$smtp['from'].'>',
'MIME-Version'=>'1.0',
'Subject'=>inlineCode($smtp['subject']),
'To'=>$smtp['to'],
'Content-Type'=>'text/html; charset=UTF-8; format=flowed',
'Content-Transfer-Encoding'=>'base64'
);
$data = buildHeader($header).$CRLF.chunk_split()(base64_encode($smtp['body']));
$content = "EHLO ".$smtp["url"].$CRLF; // 先得hello一下
$content .= "AUTH LOGIN".$CRLF.base64_encode($smtp["username"]).$CRLF.base64_encode($smtp["password"]).$CRLF; // 验证登陆
$content .= "MAIL FROM:".$smtp["from"].$CRLF; // 发件地址
$content .= "RCPT TO:".$smtp["to"].$CRLF; // 收件地址
$content .= "DATA".$CRLF.$data.$CRLF.".".$CRLF; // 发送内容
$content .= "QUIT".$CRLF; // 退出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl接收返回数据
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $content);
$test = curl_exec($curl);
var_dump($test);
echo "<br/>\r\n";
var_dump($content);
// 结束
curl_close($curl);
?>

花了近6个小时让产品的代码兼容了fsockopen和curl;有时间再研究下兼容fsockopen和curl简单发送邮件的smtp类。

您可能感兴趣的文章:
php 邮件发送类(smtp方式或mail函数方式)
php使用smtp发送邮件的实现代码
php smtp发送邮件的函数
php使用Pear的NetMail发送smtp邮件
使用pear:Net_SMTP类发送邮件的例子
linux下php配置smtp发送邮件的方法
php写的smtp邮件发送类


    
[2]生成某时间段内的从开始月份到结束月份的月份数组的代码
    来源: 互联网  发布时间: 2013-12-24

一个用于生成某时间段内的从开始月份到结束月份的月份数组的代码,有需要的朋友可以参考下。
 

代码如下:

<?php
/**
* 生成某时间段从开始月份到结束月份的月份数组
* @param unknown_type $start
* @param unknown_type $end
* url: http://www.
*/
function getMonthArr($start, $end)
{
$start = empty($start) ? date('Y-m',strtotime('-1 month')) : $start;
$end = empty($end) ? date('Y-m') : $end;

//转为时间戳
$st = strtotime($start.'-01');
$et = strtotime($end.'-01');

$t = $st;
$i = 0;
while($t <= $et)
{
/*
累加每个月的的总秒数 计算公式:上一月1号的时间戳秒数减去当前月的时间戳秒数
*/
$d[$i] = trim(date('Y-m',$t),' ');
$t += strtotime('+1 month', $t)-$t;
$i++;
}
return $d;
}
?>


    
[3]php的二个函数:生成序列号、字符串替换
    来源: 互联网  发布时间: 2013-12-24

这里为大家提供二个函数:
第一个是用来生成序列号。
第二个是用来“加密”部分字符串,稍作修改,即可实现无与伦比的功能,哈---比如达到在找回密码时经常看到的 ********@163.com 这种隐藏部分字符的效果。
 

代码如下:

<?php
/**
* 序列号生成器
  func: snMaker
  param: $pre = ''
*/
function snMaker($pre = '') {
$date = date('Ymd');
$rand = rand(1000000,9999999);
$time = mb_substr(time(), 5, 5, 'utf-8');
$serialNumber = $pre.$date.$time.$rand;
// echo strlen($serialNumber).'<br />';
return $serialNumber;
}
echo snMaker();

/**
* 将一个字符串的一部分替换成某一特定字符
* @param str or int $str 需要处理的字符串
* @param str or int $to 将替换成什么字符串
* @param int $start 保留前几个字符
* @param int $end 保留后几个字符
* url: http://www.
* date: 2013/2/17
*/
function hideString($str = 'hello', $to = '*', $start = 1, $end = 0) {
$lenth = strlen($str) - $start - $end;
$lenth = ($lenth < 0) ? 0 : $lenth;
$to = str_repeat($to, $lenth);
$str = substr_replace()($str, $to, $start, $lenth);
return $str;
}
echo hideString();
?>


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,