PHP使用socket傳送郵件

2021-06-26 01:03:58 字數 1817 閱讀 6603

smtp協議建立在tcp協議之上,所以原則上按照smtp協議的規範,使用socket跟smtp伺服器進行互動。使用fsockopen()函式代替socket_*()類函式。

fsockopen()函式的好處是把socket連線繫結到乙個流上,然後使用各種操作流的函式操作這個socket連線。

使用fsockopen()函式建立的socket連線控制代碼可以提供給諸如fgets()、fputs()、fwrite()、fread()、fclose()等流函式使用。

示例**如下:

<?php

class smtp_mail, error message:\n");

}$response = fgets($this->sock);

if (strstr($response, "220") === false) \n");}}

private function show_debug($message)

\n";}}

private function do_command($cmd, $return_code)

return true;

}private function is_email($email) else

}public function send_mail($from, $to, $subject, $body)

if (empty($subject) or empty($body))

$detail = "from:".$from."\r\n";

$detail .= "to:".$to."\r\n";

$detail .= "subject:".$subject."\r\n";

if ($this->mail_format == 1)  else

$detail .= "charset=gb2312\r\n\r\n";

$detail .= $body."\r\n.\r\n";

$this->do_command("helo smtp.qq.com\r\n", 250);

$this->do_command("auth login\r\n", 334);

$this->do_command($this->user."\r\n", 334);

$this->do_command($this->pass."\r\n", 235);

$this->do_command("mail from:<".$from.">\r\n", 250);

$this->do_command("rcpt to:<".$to.">\r\n", 250);

$this->do_command("data\r\n",354);

$this->do_command($detail, 250);

$this->do_command("quit\r\n", 221);

return true;}}

$host = "smtp.163.com";

$port = 25;

$user = "[email protected]";

$pass = "********";

$from = "[email protected]";

$to   = "[email protected]";

$subject = "hello body";

$content = "this is example email for you";

$mail = new smtp_mail($host, $port, $user, $pass);

$mail->send_mail($from, $to, $subject, $content);

?>

使用Socket傳送郵件

之前寫過一篇 使用php傳送郵件 方法是利用nette mail元件傳送郵件。以下內容整理自 php核心技術與最佳實踐 php有乙個自帶的mail 函式,但是要想使用smtp協議傳送郵件,需要安裝smtp伺服器。如果不想安裝,可以使用socket傳送郵件。smtp協議建立在tcp協議之上,所以原則上...

使用Socket撰寫郵件傳送程式

首先,我們簡單介紹一下帶驗證的 tp伺服器如何使用auth原語進行身份驗證,其詳細的定義可以參考rfc2554。具體如下 1 首先,需要使用ehlo而不是原先的helo。2 ehlo成功以後,客戶端需要傳送auth原語,與伺服器就認證時使用者名稱和密碼的傳遞方式進行協商。3 如果協商成功,伺服器會返...

用Socket傳送電子郵件 php

用socket傳送電子郵件 hello this is a test 生成mime類例項 mime new mime mail chatme 263.net to,str 新增html附件 mime attach html data,html,base64 注釋掉,採用我的傳送郵件處理 mime s...