smtp.inc.t
来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 138 行
T
138 行
<?php/**************************************************************************** copyright : (C) 2001-2003 Advanced Internet Designs Inc.* email : forum@prohost.org* $Id: smtp.inc.t,v 1.2 2003/12/18 18:20:49 iliaa Exp $** This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or * (at your option) any later version.***************************************************************************/class fud_smtp{ var $fs, $last_ret, $msg, $subject, $to, $from, $headers; function get_return_code($cmp_code='250') { if (!($this->last_ret = fgets($this->fs, 1024))) { return; } if (substr($this->last_ret, 0, 3) == $cmp_code) { return 1; } return; } function wts($string) { fwrite($this->fs, $string . "\r\n"); } function open_smtp_connex() { if( !($this->fs = fsockopen($GLOBALS['FUD_SMTP_SERVER'], 25, $errno, $errstr, $GLOBALS['FUD_SMTP_TIMEOUT'])) ) { exit("ERROR: stmp server at ".$GLOBALS['FUD_SMTP_SERVER']." is not avaliable<br>\nAdditional Problem Info: $errno -> $errstr <br>\n"); } if (!$this->get_return_code(220)) { return; } $this->wts("HELO ".$GLOBALS['FUD_SMTP_SERVER']); if (!$this->get_return_code()) { return; } /* Do SMTP Auth if needed */ if ($GLOBALS['FUD_SMTP_LOGIN']) { $this->wts('AUTH LOGIN'); if (!$this->get_return_code(334)) { return; } $this->wts(base64_encode($GLOBALS['FUD_SMTP_LOGIN'])); if (!$this->get_return_code(334)) { return; } $this->wts(base64_encode($GLOBALS['FUD_SMTP_PASS'])); if (!$this->get_return_code(235)) { return; } } return 1; } function send_from_hdr() { $this->wts('MAIL FROM: <'.$GLOBALS['NOTIFY_FROM'].'>'); return $this->get_return_code(); } function send_to_hdr() { if (!@is_array($this->to)) { $this->to = array($this->to); } foreach ($this->to as $to_addr) { $this->wts('RCPT TO: <'.$to_addr.'>'); if (!$this->get_return_code()) { return; } } return 1; } function send_data() { $this->wts('DATA'); if (!$this->get_return_code(354)) { return; } /* This is done to ensure what we comply with RFC requiring each line to end with \r\n */ $this->msg = preg_replace("!(\r)?\n!si", "\r\n", $this->msg); if( empty($this->from) ) $this->from = $GLOBALS['NOTIFY_FROM']; $this->wts('Subject: '.$this->subject); $this->wts('Date: '.date("r")); $this->wts('To: '.(count($this->to) == 1 ? $this->to[0] : $GLOBALS['NOTIFY_FROM'])); $this->wts('From: '.$this->from); $this->wts('X-Mailer: FUDforum v'.$GLOBALS['FORUM_VERSION']); $this->wts($this->headers."\r\n"); $this->wts($this->msg); $this->wts('.'); return $this->get_return_code(); } function close_connex() { $this->wts('quit'); fclose($this->fs); } function send_smtp_email() { if (!$this->open_smtp_connex()) { exit("Invalid STMP return code: ".$this->last_ret."<br>\n"); } if (!$this->send_from_hdr()) { $this->close_connex(); exit("Invalid STMP return code: ".$this->last_ret."<br>\n"); } if (!$this->send_to_hdr()) { $this->close_connex(); exit("Invalid STMP return code: ".$this->last_ret."<br>\n"); } if (!$this->send_data()) { $this->close_connex(); exit("Invalid STMP return code: ".$this->last_ret."<br>\n"); } $this->close_connex(); }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?