中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

php基于socket實現SMTP發送郵件的方法
來源:易賢網 閱讀:1143 次 日期:2015-03-09 15:55:23
溫馨提示:易賢網小編為您整理了“php基于socket實現SMTP發送郵件的方法”,方便廣大網友查閱!

這篇文章主要介紹了php基于socket實現SMTP發送郵件的方法,實例分析了php采用socket實現smtp發送郵件的原理與技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了php基于socket實現SMTP發送郵件的方法。分享給大家供大家參考。具體分析如下:

php采用socket通過SMTP發送郵件。

用的是php的php-sockets擴展,可以發送純文本和html格式的郵件。代碼如下:

代碼如下:

<?php

/**

* 郵件發送類

* 支持發送純文本郵件和HTML格式的郵件

* @example

* $config = array(

* "from" => "*****",

* "to" => "***",

* "subject" => "test",

* "body" => "<b>test</b>",

* "username" => "***",

* "password" => "****",

* "isHTML" => true

* );

*

* $mail = new MySendMail();

*

* $mail->setServer("smtp.126.com");

*

* $mail->setMailInfo($config);

* if(!$mail->sendMail()) {

* echo $mail->error();

* return 1;

* }

*/

class MySendMail {

/**

* @var 郵件傳輸代理用戶名

* @access private

*/

private $_userName;

/**

* @var 郵件傳輸代理密碼

* @access private

*/

private $_password;

/**

* @var 郵件傳輸代理服務器地址

* @access protected

*/

protected $_sendServer;

/**

* @var 郵件傳輸代理服務器端口

* @access protected

*/

protected $_port=25;

/**

* @var 發件人

* @access protected

*/

protected $_from;

/**

* @var 收件人

* @access protected

*/

protected $_to;

/**

* @var 主題

* @access protected

*/

protected $_subject;

/**

* @var 郵件正文

* @access protected

*/

protected $_body;

/**

* @var 是否是HTML格式的郵件

* @access protected

*/

protected $_isHTML=false;

/**

* @var socket資源

* @access protected

*/

protected $_socket;

/**

* @var 錯誤信息

* @access protected

*/

protected $_errorMessage;

public function __construct($from="", $to="", $subject="", $body="", $server="", $username="", $password="",$isHTML="", $port="") {

if(!empty($from)){

$this->_from = $from;

}

if(!empty($to)){

$this->_to = $to;

}

if(!empty($subject)){

$this->_subject = $subject;

}

if(!empty($body)){

$this->_body = $body;

}

if(!empty($isHTML)){

$this->_isHTML = $isHTML;

}

if(!empty($server)){

$this->_sendServer = $server;

}

if(!empty($port)){

$this->_port = $port;

}

if(!empty($username)){

$this->_userName = $username;

}

if(!empty($password)){

$this->_password = $password;

}

}

/**

* 設置郵件傳輸代理

* @param string $server 代理服務器的ip或者域名

* @param int $port 代理服務器的端口,smtp默認25號端口

* @param int $localPort 本地端口

* @return boolean

*/

public function setServer($server, $port=25) {

if(!isset($server) || empty($server) || !is_string($server)) {

$this->_errorMessage = "first one is an invalid parameter";

return false;

}

if(!is_numeric($port)){

$this->_errorMessage = "first two is an invalid parameter";

return false;

}

$this->_sendServer = $server;

$this->_port = $port;

return true;

}

/**

* 設置郵件

* @access public

* @param array $config 郵件配置信息

* 包含郵件發送人、接收人、主題、內容、郵件傳輸代理的驗證信息

* @return boolean

*/

public function setMailInfo($config) {

if(!is_array($config) || count($config) < 6){

$this->_errorMessage = "parameters are required";

return false;

}

$this->_from = $config['from'];

$this->_to = $config['to'];

$this->_subject = $config['subject'];

$this->_body = $config['body'];

$this->_userName = $config['username'];

$this->_password = $config['password'];

if(isset($config['isHTML'])){

$this->_isHTML = $config['isHTML'];

}

return true;

}

/**

* 發送郵件

* @access public

* @return boolean

*/

public function sendMail() {

$command = $this->getCommand();

$this->socket();

foreach ($command as $value) {

if($this->sendCommand($value[0], $value[1])) {

continue;

}

else{

return false;

}

}

$this->close(); //其實這里也沒必要關閉,smtp命令:QUIT發出之后,服務器就關閉了連接,本地的socket資源會自動釋放

echo 'Mail OK!';

return true;

}

/**

* 返回錯誤信息

* @return string

*/

public function error(){

if(!isset($this->_errorMessage)) {

$this->_errorMessage = "";

}

return $this->_errorMessage;

}

/**

* 返回mail命令

* @access protected

* @return array

*/

protected function getCommand() {

if($this->_isHTML) {

$mail = "MIME-Version:1.0\r\n";

$mail .= "Content-type:text/html;charset=utf-8\r\n";

$mail .= "FROM:test<" . $this->_from . ">\r\n";

$mail .= "TO:<" . $this->_to . ">\r\n";

$mail .= "Subject:" . $this->_subject ."\r\n\r\n";

$mail .= $this->_body . "\r\n.\r\n";

}

else{

$mail = "FROM:test<" . $this->_from . ">\r\n";

$mail .= "TO:<" . $this->_to . ">\r\n";

$mail .= "Subject:" . $this->_subject ."\r\n\r\n";

$mail .= $this->_body . "\r\n.\r\n";

}

$command = array(

array("HELO sendmail\r\n", 250),

array("AUTH LOGIN\r\n", 334),

array(base64_encode($this->_userName) . "\r\n", 334),

array(base64_encode($this->_password) . "\r\n", 235),

array("MAIL FROM:<" . $this->_from . ">\r\n", 250),

array("RCPT TO:<" . $this->_to . ">\r\n", 250),

array("DATA\r\n", 354),

array($mail, 250),

array("QUIT\r\n", 221)

);

return $command;

}

/**

* @access protected

* @param string $command 發送到服務器的smtp命令

* @param int $code 期望服務器返回的響應嗎

* @param boolean

*/

protected function sendCommand($command, $code) {

echo 'Send command:' . $command . ',expected code:' . $code . '<br />';

//發送命令給服務器

try{

if(socket_write($this->_socket, $command, strlen($command))){

//讀取服務器返回

$data = trim(socket_read($this->_socket, 1024));

echo 'response:' . $data . '<br /><br />';

if($data) {

$pattern = "/^".$code."/";

if(preg_match($pattern, $data)) {

return true;

}

else{

$this->_errorMessage = "Error:" . $data . "|**| command:";

return false;

}

}

else{

$this->_errorMessage = "Error:" . socket_strerror(socket_last_error());

return false;

}

}

else{

$this->_errorMessage = "Error:" . socket_strerror(socket_last_error());

return false;

}

}catch(Exception $e) {

$this->_errorMessage = "Error:" . $e->getMessage();

}

}

/**

* 建立到服務器的網絡連接

* @access private

* @return boolean

*/

private function socket() {

if(!function_exists("socket_create")) {

$this->_errorMessage = "extension php-sockets must be enabled";

return false;

}

//創建socket資源

$this->_socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));

if(!$this->_socket) {

$this->_errorMessage = socket_strerror(socket_last_error());

return false;

}

//連接服務器

if(!socket_connect($this->_socket, $this->_sendServer, $this->_port)) {

$this->_errorMessage = socket_strerror(socket_last_error());

return false;

}

socket_read($this->_socket, 1024);

return true;

}

/**

* 關閉socket

* @access private

* @return boolean

*/

private function close() {

if(isset($this->_socket) && is_object($this->_socket)) {

$this->_socket->close();

return true;

}

$this->_errorMessage = "no resource can to be close";

return false;

}

}

/**************************** Test ***********************************/

$config = array(

"from" => "XXXXX",

"to" => "XXXXX",

"subject" => "test",

"body" => "<b>test</b>",

"username" => "XXXXX",

"password" => "******",

//"isHTML" => true

);

$mail = new MySendMail();

$mail->setServer("smtp.126.com");

$mail->setMailInfo($config);

if(!$mail->sendMail()) {

echo $mail->error();

return 1;

}

希望本文所述對大家的php程序設計有所幫助。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产欧美精品日韩区二区麻豆天美| 欧美肉体xxxx裸体137大胆| 国产精品国色综合久久| 欧美成人精品| 欧美午夜电影在线| 国产老女人精品毛片久久| 国内精品伊人久久久久av一坑| 狠狠色综合色区| 欧美性猛交xxxx免费看久久久| 国产精品久久波多野结衣| 国产日产亚洲精品| 亚洲日本成人| 亚洲欧美变态国产另类| 久热精品视频| 国产亚洲精品bv在线观看| 99re亚洲国产精品| 欧美视频在线免费| 黄色在线一区| 欧美专区日韩专区| 国产欧美另类| 欧美一级淫片aaaaaaa视频| 欧美激情五月| 99re在线精品| 欧美视频一区二区三区在线观看| 亚洲电影免费观看高清完整版在线 | 国产精品99久久久久久久vr| 欧美日韩精品免费看| 久久夜精品va视频免费观看| 欧美在线一区二区三区| 亚洲国产一区二区三区青草影视| 国产精品久久综合| 红桃视频国产一区| 国产亚洲美州欧州综合国| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 久久字幕精品一区| 激情成人av在线| 一区二区在线观看视频| 国产亚洲视频在线观看| 欧美视频一区在线| 欧美日韩高清在线| 欧美1区2区视频| 欧美激情视频网站| 国产一区二区三区av电影| 国产欧美一区二区精品秋霞影院| 国产麻豆日韩欧美久久| 亚洲激情视频网| 欧美在线观看天堂一区二区三区| 久久一区国产| 国产在线视频不卡二| av不卡在线观看| 久久精品在线视频| 国产精品久久久一本精品| 99日韩精品| 久热精品视频在线观看| 狠狠色狠狠色综合日日91app| 亚洲免费在线观看| 国产精品久久久久久久久久免费| 一本色道久久加勒比精品| 亚洲私人影吧| 国产精品亚洲综合久久| 欧美一区二区三区免费观看 | 久久久水蜜桃| 在线观看欧美成人| 欧美日韩美女在线| 亚洲欧美日韩精品综合在线观看| 国产精品人人爽人人做我的可爱| 午夜精品一区二区三区在线视| 欧美日韩一区二区国产| 午夜精品成人在线视频| 国产欧美日韩综合一区在线播放| 午夜在线不卡| 黑人极品videos精品欧美裸| 欧美人与性动交cc0o| 午夜免费电影一区在线观看| 黑人巨大精品欧美一区二区| 久久亚洲国产精品日日av夜夜| 夜夜夜精品看看| 国产一区二区三区四区| 欧美日韩福利视频| 欧美诱惑福利视频| 亚洲视频在线播放| **网站欧美大片在线观看| 国产精品高清网站| 麻豆精品网站| 久久全国免费视频| 欧美三级日本三级少妇99| 欧美一级在线视频| 亚洲国产一区二区三区在线播 | 亚洲美女av在线播放| 国模精品一区二区三区色天香| 国产精品白丝av嫩草影院 | 女人香蕉久久**毛片精品| 欧美激情视频免费观看| 国产精品五月天| 国产午夜精品在线| 99国产精品99久久久久久| 欧美一区二区三区的| 欧美电影在线观看| 国产精品丝袜久久久久久app| 激情久久久久久| 国产视频亚洲精品| 黑人一区二区三区四区五区| 国产一区999| 国产欧美日韩麻豆91| 国产精品xxxav免费视频| 欧美日韩成人综合在线一区二区| 欧美日韩国产首页在线观看| 欧美午夜无遮挡| 国产精品久久久久久久第一福利 | 亚洲深夜福利网站| 欧美va天堂| 国模叶桐国产精品一区| 亚洲欧美成人一区二区在线电影 | 国内精品**久久毛片app| 亚洲精品日韩久久| 亚洲永久免费观看| 蜜臀99久久精品久久久久久软件| 欧美日韩一区成人| 激情久久久久久久久久久久久久久久| 亚洲国产精品va在线观看黑人| 亚洲尤物在线视频观看| 免费日韩一区二区| 国产九九视频一区二区三区| 日韩一级网站| 久久综合网色—综合色88| 欧美精品三级日韩久久| 国产精品午夜国产小视频| 亚洲性夜色噜噜噜7777| 欧美美女操人视频| 国产精品久在线观看| 国产亚洲欧洲| 欧美一级成年大片在线观看| 欧美一区二区三区四区在线观看地址 | 亚洲每日在线| 欧美国产日本| 亚洲精品日产精品乱码不卡| 欧美日韩成人激情| 一本色道久久88精品综合| 国产精品福利影院| 久久成人一区| 激情久久久久久久| 久久伊人精品天天| 久久久国产一区二区三区| 在线观看亚洲精品视频| 国产精品视频一区二区三区 | 欧美大色视频| 久久影院亚洲| 国产精品久久久久三级| 久久精品成人一区二区三区蜜臀 | 亚洲乱码国产乱码精品精天堂| 在线观看日产精品| 久久永久免费| 久久久久欧美精品| 久久精品中文字幕免费mv| 午夜日韩在线| 国产日韩在线播放| 国产伦精品一区二区三区免费 | 国产精品少妇自拍| 久久青青草原一区二区| 欧美精品免费播放| 国产精品日韩欧美一区| 亚洲黄网站黄| 亚洲视频免费在线| 亚洲三级免费电影| 欧美一区二区国产| 欧美视频中文一区二区三区在线观看 | 久久亚洲欧洲| 亚洲色图综合久久| 亚洲美女电影在线| 在线免费日韩片| 黄色成人精品网站| 狠狠久久亚洲欧美| 国产亚洲人成a一在线v站| 国产精品亚洲人在线观看| 欧美色另类天堂2015| 欧美日韩精品在线视频| 欧美精品电影在线| 欧美电影在线观看完整版| 免费观看日韩av| 欧美国产精品日韩| 欧美激情91| 欧美激情在线播放| 欧美日韩精品三区| 欧美日韩一区二区在线| 欧美日韩亚洲一区二区三区| 欧美日韩一区在线视频| 欧美私人网站| 国产美女精品视频| 国产亚洲人成a一在线v站| 含羞草久久爱69一区| 在线欧美视频| 亚洲欧洲一区二区三区| 99综合在线| 亚洲欧美日韩一区二区| 欧美亚洲系列| 免费在线看一区| 欧美日韩国产a| 国产精品乱码一区二三区小蝌蚪 | 国产一区二区三区高清在线观看| 国产精品夜夜夜|