Php 从一台服务器到另一台服务器的代理和SMTP连接?

Php 从一台服务器到另一台服务器的代理和SMTP连接?,php,email,proxy,Php,Email,Proxy,我有两台服务器,一台是一台128mb内存的小型VPS,另一台是一台运行ubuntu的旧PC 旧电脑有更多的ram,因此证明更有用,但唯一的问题是我不能使用php的mail()函数,因为我的ISP阻止了SMTP 我以前听说过stackoverflow,我可以让这两台服务器协同工作,这样我就可以在脚本本身在我的旧PC上时从VPS发送邮件 谢谢 您可以使用PEAR库连接到远程SMTP服务器。或者,您可以使用Zend框架的邮件功能。PHPMailer是您的另一个选项 PHPMAILER示例 requir

我有两台服务器,一台是一台128mb内存的小型VPS,另一台是一台运行ubuntu的旧PC

旧电脑有更多的ram,因此证明更有用,但唯一的问题是我不能使用php的mail()函数,因为我的ISP阻止了SMTP

我以前听说过stackoverflow,我可以让这两台服务器协同工作,这样我就可以在脚本本身在我的旧PC上时从VPS发送邮件


谢谢

您可以使用PEAR库连接到远程SMTP服务器。或者,您可以使用Zend框架的邮件功能。PHPMailer是您的另一个选项

PHPMAILER示例

require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = file_get_contents('contents.html');
$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port       = 26;                    // set the SMTP port for the GMAIL server
$mail->Username   = "yourname@yourdomain"; // SMTP account username
$mail->Password   = "yourpassword";        // SMTP account password

$mail->SetFrom('name@yourdomain.com', 'First Last');

$mail->AddReplyTo("name@yourdomain.com","First Last");

$mail->Subject    = "PHPMailer Test Subject via smtp, basic with authentication";

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");

$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}
include('Mail/smtp.php');

class MailHandler{

   var $params = null;
   var $mail_object = null;
   var $recipients = null;
   var $headers = null;
   var $body = "";

function MailHandler($host, $port, $auth, $username, $password, $persist) {
   $this->params["host"] = $host;
   $this->params["port"] = $port;
   $this->params["auth"] = $auth;
   $this->params["username"] = $username;
   $this->params["password"] = $password;
   $this->params["persist"] = $persist;

   // Create the mail object using the Mail::factory method
   //$this->mail_object =& Mail::factory('smtp', $this->params);
   $this->mail_object = new Mail_smtp($this->params);
}

function createFrom($email){
   $this->headers['From'] = $email;
}

function createTo($email){
   $this->headers['To'] = $email;
   $this->recipients = array($email);
}

function createCC($email){
   $this->headers['Cc'] = $email;
}

function createBCC($email){
   $this->headers['Bcc'] = $email;
}

function createSubject($sub){
   $this->headers['Subject'] = $sub;
}

function createBody($body){
   $this->body=$body;
}

function sendMail(){
   if ($this->mail_object->send($this->recipients, $this->headers, $this->body)) {
      return true;
   }else{
      return false;
   }
}

}



$smtpserver_host = "localhost"; // The server to connect. Default is localhost
$smtpserver_Port = 25; // The port to connect. Default is 25
$smtpserver_auth = FALSE; // Whether or not to use SMTP authentication. Default is FALSE
$smtpserver_username = "username"; // The username to use for SMTP authentication.
$smtpserver_password = "password"; // The password to use for SMTP authentication.
$smtpserver_persist = FALSE; // Indicates whether or not the SMTP connection should persist over multiple calls to the send() method.
$mailhandler=new MailHandler($smtpserver_host, $smtpserver_Port, $smtpserver_auth, $smtpserver_username, $smtpserver_password, $smtpserver_persist);

$mailhandler->createTo("toaddress");
$mailhandler->createFrom("fromaddress");
$mailhandler->createSubject("subject");
$mailhandler->createBody("body");

if($mailhandler->sendMail()){
   echo "Mail sent.\n";
}else{
   echo "Error sending mail!\n";
}

?>
PHP梨示例
include('Mail/smtp.php');

class MailHandler{

   var $params = null;
   var $mail_object = null;
   var $recipients = null;
   var $headers = null;
   var $body = "";

function MailHandler($host, $port, $auth, $username, $password, $persist) {
   $this->params["host"] = $host;
   $this->params["port"] = $port;
   $this->params["auth"] = $auth;
   $this->params["username"] = $username;
   $this->params["password"] = $password;
   $this->params["persist"] = $persist;

   // Create the mail object using the Mail::factory method
   //$this->mail_object =& Mail::factory('smtp', $this->params);
   $this->mail_object = new Mail_smtp($this->params);
}

function createFrom($email){
   $this->headers['From'] = $email;
}

function createTo($email){
   $this->headers['To'] = $email;
   $this->recipients = array($email);
}

function createCC($email){
   $this->headers['Cc'] = $email;
}

function createBCC($email){
   $this->headers['Bcc'] = $email;
}

function createSubject($sub){
   $this->headers['Subject'] = $sub;
}

function createBody($body){
   $this->body=$body;
}

function sendMail(){
   if ($this->mail_object->send($this->recipients, $this->headers, $this->body)) {
      return true;
   }else{
      return false;
   }
}

}



$smtpserver_host = "localhost"; // The server to connect. Default is localhost
$smtpserver_Port = 25; // The port to connect. Default is 25
$smtpserver_auth = FALSE; // Whether or not to use SMTP authentication. Default is FALSE
$smtpserver_username = "username"; // The username to use for SMTP authentication.
$smtpserver_password = "password"; // The password to use for SMTP authentication.
$smtpserver_persist = FALSE; // Indicates whether or not the SMTP connection should persist over multiple calls to the send() method.
$mailhandler=new MailHandler($smtpserver_host, $smtpserver_Port, $smtpserver_auth, $smtpserver_username, $smtpserver_password, $smtpserver_persist);

$mailhandler->createTo("toaddress");
$mailhandler->createFrom("fromaddress");
$mailhandler->createSubject("subject");
$mailhandler->createBody("body");

if($mailhandler->sendMail()){
   echo "Mail sent.\n";
}else{
   echo "Error sending mail!\n";
}

?>

我可以编辑php的配置并将其指向我的VPS吗?不可以:-(无法编辑php.ini文件以使用远程SMTP服务器。我强烈建议使用PEAR或Zend库来解决您的问题。您的Ubuntu计算机上是否安装了PEAR?另一个问题是如何获取SMTP凭据?我从未编辑过它。SMTP是在购买VPSsudo apt get install p时安装的hp pear-在你的Ubuntu机器上运行它,它会安装它。