最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php中通過curl smtp發(fā)送郵件

 更新時間:2012年06月05日 23:53:24   作者:  
公司的云平臺把fsockopen關(guān)掉了,如果要使用smtp外網(wǎng)的郵箱來發(fā)送郵件的話 只能試試使用curl來進(jìn)行了
先google了一下,發(fā)現(xiàn)很多問相關(guān)問題的但沒有相關(guān)的解答,在phpclasses里也沒有找到相關(guān)的類于是自己邊看stmp的相關(guān)協(xié)議邊開始嘗試curl
SMTP協(xié)議
這個在網(wǎng)上可以找到多相關(guān)的例子,可以自己實驗一下使用telnet去連接mail服務(wù)器
復(fù)制代碼 代碼如下:

$ telnet 郵箱SMTP服務(wù)地址 25
Trying 郵箱服務(wù)IP地址...
Connected to 郵箱SMTP服務(wù)地址.
Escape character is '^]'.
exchange郵箱服務(wù)器地址 Microsoft ESMTP MAIL Service ready at Sat, 2 Jun 2012 15:02:12 +0800
EHLO 127.0.0.1
-exchange郵箱服務(wù)器地址 Hello [郵箱服務(wù)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:發(fā)件箱地址
2.1.0 Sender OK
RCPT TO:收件箱地址
2.1.5 Recipient OK
DATA
Start mail input; end with <CRLF>.<CRLF>
要發(fā)送的內(nèi)容(這里的相關(guān)的規(guī)范有很多)
.
2.6.0 <0b476f30-3b96-4e3d-84d2-395a96d34000@exchange郵箱服務(wù)器地址> Queued mail for delivery
QUIT
2.0.0 Service closing transmission channel
Connection closed by foreign host.

php測試代碼:
復(fù)制代碼 代碼如下:

<?php
header("content-type:text/html;charset=utf-8");
$smtp = array(
"url" => "郵箱SMTP服務(wù)器地址",
"port" => "郵箱SMTP服務(wù)器端口", // 一般為25
"username" => "用戶名",
"password" => "密碼",
"from" => "發(fā)件地址",
"to" => "收件地址",
"subject" => "測試一下標(biāo)題",
"body" => "測試一下內(nèi)容"
);
$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; // 發(fā)件地址
$content .= "RCPT TO:".$smtp["to"].$CRLF; // 收件地址
$content .= "DATA".$CRLF.$data.$CRLF.".".$CRLF; // 發(fā)送內(nèi)容
$content .= "QUIT".$CRLF; // 退出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl接收返回數(shù)據(jù)
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $content);
$test = curl_exec($curl);
var_dump($test);
echo "<br/>\r\n";
var_dump($content);
// 結(jié)束
curl_close($curl);

以上只是測試的php
包測試+修改花了近6個小時讓產(chǎn)品的代碼兼容了fsockopen和curl
以后有空寫個兼容fsockopen和curl簡單發(fā)送郵件的smtp類

相關(guān)文章

  • php下使用strpos需要注意 === 運算符

    php下使用strpos需要注意 === 運算符

    首先應(yīng)該知道 strpos 函數(shù)可能返回布爾值 FALSE,但也可能返回一個與 FALSE 等值的非布爾值,例如 0 或者""。我們應(yīng)使用 === 運算符來測試本函數(shù)的返回值。
    2010-07-07
  • php實現(xiàn)多維數(shù)組中每個單元值(數(shù)字)翻倍的方法

    php實現(xiàn)多維數(shù)組中每個單元值(數(shù)字)翻倍的方法

    這篇文章主要介紹了php實現(xiàn)多維數(shù)組中每個單元值(數(shù)字)翻倍的方法,涉及php操作數(shù)組的技巧,需要的朋友可以參考下
    2015-02-02
  • php使用ereg驗證文件上傳的方法

    php使用ereg驗證文件上傳的方法

    這篇文章主要介紹了php使用ereg驗證文件上傳的方法,是非常簡單實用的正則驗證技巧,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • 淺析PHP原理之變量(Variables inside PHP)

    淺析PHP原理之變量(Variables inside PHP)

    我前面的文章中已經(jīng)講過,PHP的執(zhí)行是通過Zend engine(ZE, Zend引擎), ZE是用C編寫的,大家都知道C是一個強(qiáng)類型語言,也就是說,在C中所有的變量在它被聲明到最終銷毀,都只能保存一種類型的數(shù)據(jù)。 那么PHP是如何在ZE的基礎(chǔ)上實現(xiàn)弱類型的呢
    2013-08-08
  • PHP封裝類似thinkphp連貫操作數(shù)據(jù)庫Db類與簡單應(yīng)用示例

    PHP封裝類似thinkphp連貫操作數(shù)據(jù)庫Db類與簡單應(yīng)用示例

    這篇文章主要介紹了PHP封裝類似thinkphp連貫操作數(shù)據(jù)庫Db類與簡單應(yīng)用,涉及php基于mysqli的數(shù)據(jù)庫連接、增刪改查、異常處理等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • php正則刪除img標(biāo)簽的方法示例

    php正則刪除img標(biāo)簽的方法示例

    這篇文章主要介紹了php正則刪除img標(biāo)簽的方法,結(jié)合具體實例形式分析了php針對img標(biāo)簽正則匹配相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • PHP中PDO事務(wù)處理操作示例

    PHP中PDO事務(wù)處理操作示例

    這篇文章主要介紹了PHP中PDO事務(wù)處理操作,結(jié)合實例形式分析了php使用pdo的mysql事務(wù)處理操作步驟、實現(xiàn)技巧及相關(guān)注意事項,需要的朋友可以參考下
    2018-05-05
  • PHP實現(xiàn)的觀察者模式實例

    PHP實現(xiàn)的觀察者模式實例

    這篇文章主要介紹了PHP實現(xiàn)的觀察者模式,結(jié)合具體實例形式分析了php觀察者模式的定義與使用方法,需要的朋友可以參考下
    2017-06-06
  • PHP產(chǎn)生隨機(jī)字符串函數(shù)

    PHP產(chǎn)生隨機(jī)字符串函數(shù)

    PHP產(chǎn)生隨機(jī)字符串函數(shù)...
    2006-12-12
  • php注冊登錄系統(tǒng)簡化版

    php注冊登錄系統(tǒng)簡化版

    這篇文章主要為大家詳細(xì)介紹了php注冊登錄系統(tǒng)簡化版的實現(xiàn)步驟,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論

皮山县| 乌恰县| 盐城市| 九龙城区| 荃湾区| 阿拉善左旗| 郑州市| 疏附县| 富川| 洛宁县| 巫溪县| 屯留县| 上饶县| 合山市| 泸州市| 鹤壁市| 莱芜市| 饶河县| 美姑县| 兴业县| 昌都县| 凤翔县| 隆子县| 吴堡县| 长垣县| 梨树县| 区。| 津南区| 达孜县| 焦作市| 桐乡市| 阜宁县| 安西县| 曲靖市| 天全县| 金湖县| 宁安市| 黔西县| 梨树县| 兴业县| 徐水县|