www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

php使用pear_smtp发送邮件,mailer类调用远程SMTP服务

2019-07-14 01:39 来源:未知

注意:上面那个$mail->IsSendmail();  需要注释掉,否则如果没有sendmail组件的话,会提示 “Could  not execute: /var/qmail/bin/sendmail ”的错误!

; UNIX: "/path1:/path2" 
include_path = ".:./php/pear"
;
; Windows: "path1;path2"
;include_path = ".;c:phppear"
require 'Net/SMTP.php';
$host = '126.com';//smtp服务器的ip或域名
$username= 'arcow';//登陆smtp服务器的用户名
$password= 'secret';//登陆smtp服务器的密码
$from = 'arcow@126.com';  //谁发的邮件
$rcpt = array('test@test.com', 'arcow@126.com');//可设多个接收者
$subj = "Subject: 你是谁n";//主题
$body = "test it";//邮件内容
/* 建立一个类 */
if (! ($smtp = new Net_SMTP($host))) {
  die("无法初始化类Net_SMTP!n");
}
/* 开始连接SMTP服务器*/
if (PEAR::isError($e = $smtp->connect())) {
  die($e->getMessage() . "n");
}
/* smtp需要身份验证 */
$smtp->auth($username,$password,"PLAIN");
/*设置发送者邮箱 */
if (PEAR::isError($smtp->mailFrom($from))) {
  die("无法设置发送者邮箱为 <$from>n");
}
/* 设置接收邮件者 */
foreach ($rcpt as $to) {
  if (PEAR::isError($res = $smtp->rcptTo($to))) {
    die("邮件无法投递到 <$to>: " . $res->getMessage() . "n");
  }
}
/* 开始发送邮件内容 */
if (PEAR::isError($smtp->data($subj . "rn" . $body))) {
  die("Unable to send datan");
}
/* 断开连接 */
$smtp->disconnect();
echo "发送成功!";
?>

调用

<?php
require 'class.phpmailer.php';
try {
  $mail = new PHPMailer(true);
  $body = file_get_contents('contents.html'); //邮件的内容写到contents.html页面里了
  $body = preg_replace('//////','', $body); //Strip backslashes
  $mail->IsSMTP(); // tell the class to use SMTP
  $mail->SMTPAuth  = true; // enable SMTP authentication
  $mail->Port = 25; // set the SMTP server port
  $mail->Host = "mail.yourdomain.com"; // 远程SMTP服务器
  $mail->Username = "yourname@yourdomain.com"; // 远程SMTP 服务器上的用户名
  $mail->Password  = "yourpassword"; // 你的远程SMTP 服务器上用户对应的密码
  //$mail->IsSendmail(); //告诉这个类使用Sendmail组件,使用的时候如果没有sendmail组建就要把这个注释掉,否则会有
  $mail->AddReplyTo("yourname@yourdomain.com","First Last");
  $mail->From    = "fromname@yourdomain.com";
  $mail->FromName  = "First Last";
  $to = "toname@domain.com";
  $mail->AddAddress($to);
  $mail->Subject = "First PHPMailer Message";
  $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
  $mail->WordWrap = 80; // set word wrap
  $mail->MsgHTML($body);
  $mail->IsHTML(true); // send as HTML
  $mail->Send();
  echo 'Message has been sent.';
} catch (phpmailerException $e) {
  echo $e->errorMessage();
}
?>
<?php 
 require_once "vendor/autoload.php"; 

 $from = "test<test@163.com>"; 
 $to = "test <test@outlook.com>"; 
 $subject = "Hi!"; 
 $body = "Hi,nnHow are you?"; 

 $host = "smtp.163.com"; 
$port = "25"; 
 $username = "test@163.com"; 
 $password = "test123"; 

 $headers = array ('From' => $from, 
  'To' => $to, 
  'Subject' => $subject); 
 $smtp = Mail::factory('smtp', 
  array ('host' => $host, 
   'port' => $port, 
   'auth' => true, 
  // 'debug'=>true, 
   'username' => $username, 
   'password' => $password)); 

 $mail = $smtp->send($to, $headers, $body); 

 if (PEAR::isError($mail)) { 
  echo("<p>" . $mail->getMessage() . "</p>"); 
 } else { 
  echo("<p>Message successfully sent!</p>"); 
 } 
 ?>
<?php
header("Content-Type: text/html; charset=utf-8");

class smtp
{
 /* Public Variables */
 var $smtp_port;
 var $time_out;
 var $host_name;
 var $log_file;
 var $relay_host;
 var $debug;
 var $auth;
 var $user;
 var $pass;

 /* Private Variables */ 
 var $sock;

 /* Constractor */
 function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
 {
  $this->debug = FALSE;
  $this->smtp_port = $smtp_port;
  $this->relay_host = $relay_host;
  $this->time_out = 30; //is used in fsockopen() 
  $this->auth = $auth;//auth
  $this->user = $user;
  $this->pass = $pass;
  $this->host_name = "localhost"; //is used in HELO command 
  $this->log_file = "";
  $this->sock = FALSE;
}

 /* Main Function */
 function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
 {
  $mail_from = $this->get_address($this->strip_comment($from));
  $body = preg_replace("/(^|(rn))(.)/", "1.3", $body);
  $header = "MIME-Version:1.0rn";
  if($mailtype=="HTML")
  {
   $header .= "Content-Type:text/htmlrn";
  }
  $header .= "To: ".$to."rn";
  if ($cc != "") 
  {
   $header .= "Cc: ".$cc."rn";
  }
  $header .= "From: $from<".$from.">rn";
  $header .= "Subject: ".$subject."rn";
  $header .= $additional_headers;
  $header .= "Date: ".date("r")."rn";
  $header .= "X-Mailer:By Redhat (PHP/".phpversion().")rn";
  list($msec, $sec) = explode(" ", microtime());
  $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">rn";
  $TO = explode(",", $this->strip_comment($to));

  if ($cc != "") 
  {
   $TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
   }
  if ($bcc != "") 
  {
   $TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
  }
  $sent = TRUE;
  foreach ($TO as $rcpt_to) 
  {
   $rcpt_to = $this->get_address($rcpt_to);
   if (!$this->smtp_sockopen($rcpt_to)) 
   {
    $this->log_write("Error: Cannot send email to ".$rcpt_to."n");
    $sent = FALSE;
    continue;
   }
   if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) 
   {
    $this->log_write("E-mail has been sent to <".$rcpt_to.">n");
   } 
   else 
   {
    $this->log_write("Error: Cannot send email to <".$rcpt_to.">n");
    $sent = FALSE;
   }
   fclose($this->sock);
   $this->log_write("Disconnected from remote hostn");
  }
  return $sent;
 }

 /* Private Functions */
 function smtp_send($helo, $from, $to, $header, $body = "")
 {
  if (!$this->smtp_putcmd("HELO", $helo)) 
  {
   return $this->smtp_error("sending HELO command");
  }

  #auth
  if($this->auth)
  {
   if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) 
   {
    return $this->smtp_error("sending HELO command");
   }
   if (!$this->smtp_putcmd("", base64_encode($this->pass))) 
   {
    return $this->smtp_error("sending HELO command");
   }
  }
  if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) 
  {
   return $this->smtp_error("sending MAIL FROM command");
  }
  if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) 
  {
   return $this->smtp_error("sending RCPT TO command");
  }
  if (!$this->smtp_putcmd("DATA"))
  {
   return $this->smtp_error("sending DATA command");
  }
  if (!$this->smtp_message($header, $body)) 
  {
   return $this->smtp_error("sending message");
  }
  if (!$this->smtp_eom())
  {
   return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");
  }
  if (!$this->smtp_putcmd("QUIT")) 
  {
   return $this->smtp_error("sending QUIT command");
  }
  return TRUE;
 }

 function smtp_sockopen($address)
 {
  if ($this->relay_host == "") 
  {
   return $this->smtp_sockopen_mx($address);
  } 
  else
  {
   return $this->smtp_sockopen_relay();
  }
 }

 function smtp_sockopen_relay()
 {
  $this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."n");
  $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
  if (!($this->sock && $this->smtp_ok())) 
  {
   $this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."n");
   $this->log_write("Error: ".$errstr." (".$errno.")n");
   return FALSE;
  }
  $this->log_write("Connected to relay host ".$this->relay_host."n");
  return TRUE;;
 }

 function smtp_sockopen_mx($address)
 {
  $domain = preg_replace("^. @([^@] )$", "1", $address);
  if (!@getmxrr($domain, $MXHOSTS)) 
  {
   $this->log_write("Error: Cannot resolve MX "".$domain.""n");
   return FALSE;
  }
  foreach ($MXHOSTS as $host) 
  {
   $this->log_write("Trying to ".$host.":".$this->smtp_port."n");
   $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
   if (!($this->sock && $this->smtp_ok())) 
   {
    $this->log_write("Warning: Cannot connect to mx host ".$host."n");
    $this->log_write("Error: ".$errstr." (".$errno.")n");
    continue;
   }
   $this->log_write("Connected to mx host ".$host."n");
   return TRUE;
  }
  $this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")n");
  return FALSE;
 }

 function smtp_message($header, $body)
 {
  fputs($this->sock, $header."rn".$body);
  $this->smtp_debug("> ".str_replace("rn", "n"."> ", $header."n> ".$body."n> "));
  return TRUE;
 }

 function smtp_eom()
 {
  fputs($this->sock, "rn.rn");
  $this->smtp_debug(". [EOM]n");
  return $this->smtp_ok();
 }

 function smtp_ok()
 {
  $response = str_replace("rn", "", fgets($this->sock, 512));
  $this->smtp_debug($response."n");
  if (!preg_match("/^[23]/", $response)) 
  {
   fputs($this->sock, "QUITrn");
   fgets($this->sock, 512);
   $this->log_write("Error: Remote host returned "".$response.""n");
   return FALSE;
  }
  return TRUE;
 }

 function smtp_putcmd($cmd, $arg = "")
 {
  if ($arg != "") 
  {
   if($cmd=="") 
   {
    $cmd = $arg;
   }
   else
   {
    $cmd = $cmd." ".$arg;
   }
  }
  fputs($this->sock, $cmd."rn");
  $this->smtp_debug("> ".$cmd."n");
  return $this->smtp_ok();
 }

 function smtp_error($string)
 {
  $this->log_write("Error: Error occurred while ".$string.".n");
  return FALSE;
 }

 function log_write($message)
 {
  $this->smtp_debug($message);
  if ($this->log_file == "")
  {
   return TRUE;
  }
  $message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
  if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) 
  {
   $this->smtp_debug("Warning: Cannot open log file "".$this->log_file.""n");
   return FALSE;;
  }
  flock($fp, LOCK_EX);
  fputs($fp, $message);
  fclose($fp);
  return TRUE;
 }

 function strip_comment($address)
 {
  $comment = "/([^()]*)/";
  while (preg_match($comment, $address)) 
  {
   $address = preg_replace($comment, "", $address);
  }
  return $address;
 }

 function get_address($address)
 {
  $address = preg_replace("/([ trn]) /", "", $address);
  $address = preg_replace("/^.*<(. )>.*$/", "1", $address);
  return $address;
 }

 function smtp_debug($message)
 {
  if ($this->debug) 
  {
   echo $message;
  }
 }

}
?>

您可能感兴趣的文章:

  • PHPMailer邮件类利用smtp.163.com发送邮件方法
  • PHP mail 通过Windows的SMTP发送邮件失败的解决方案
  • php中通过curl smtp发送邮件
  • php smtp实现发送邮件功能
  • php基于socket实现SMTP发送邮件的方法
  • php使用pear_smtp发送邮件
  • PHP实现支持SSL连接的SMTP邮件发送类
  • php使用smtp发送支持附件的邮件示例
  • PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
  • PHP使用SMTP邮件服务器发送邮件示例

在使用以下源代码前,请配置好pear的路径,下载net_smtp包
在php.ini文件中根据你的操作系统选择不同的设置方法

<?php
header("Content-Type: text/html; charset=utf-8");

//引入发送邮件类
require("smtp.php");
//使用163邮箱服务器
$smtpserver = "smtp.163.com";
//163邮箱服务器端口
$smtpserverport = 25;
//你的163服务器邮箱账号
$smtpusermail = "xxx@163.com";
//收件人邮箱
$smtpemailto = "xxx@qq.com";

//你的邮箱账号(去掉@163.com)
$smtpuser = "xxx";//你的163邮箱去掉后面的163.com
//你的邮箱密码
$smtppass = "xxx"; //你的163邮箱SMTP的授权码,千万不要填密码!!!

//邮件主题
$mailsubject = "测试邮件发送";
//邮件内容
$mailbody = "PHP MySQL";
//邮件格式(HTML/TXT),TXT为文本邮件
$mailtype = "TXT";
//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);
//是否显示发送的调试信息
$smtp->debug = TRUE;
//发送邮件
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);

?>

本文实例讲述了php mailer类调用远程SMTP服务器发送邮件实现方法。分享给大家供大家参考,具体如下:

您可能感兴趣的文章:

  • PHPMailer邮件类利用smtp.163.com发送邮件方法
  • PHP mail 通过Windows的SMTP发送邮件失败的解决方案
  • php中通过curl smtp发送邮件
  • php smtp实现发送邮件功能
  • php基于socket实现SMTP发送邮件的方法
  • php mailer类调用远程SMTP服务器发送邮件实现方法
  • PHP实现支持SSL连接的SMTP邮件发送类
  • php使用smtp发送支持附件的邮件示例
  • PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
  • PHP使用SMTP邮件服务器发送邮件示例

本文实例为大家分享了php smtp发送邮件功能的具体代码,供大家参考,具体内容如下

下载之后,将这个文件,即class.phpmailer.php 放到你的工程的某个目录下,在需要发送邮件的地方这样写:

第三个案例:

代码链接:

希望本文所述对大家PHP程序设计有所帮助。

 这是非加密方式。
 PHPer 多数使用 mail 函数来发送邮件,但我们可以使用其他的 SMTP 服务器来发送,这里推荐使用 PEAR's mail package 来发送邮件。

sendmail.rar)

首先下载phpmailer类库文件,在这里下载,只需一个资源分。 下载地址: //www.jb51.net/codes/27188.html

以上就是本文的全部内容,php利用pear_smtp发送邮件的三个案例,希望对大家学习php程序设计有所帮助。

您可能感兴趣的文章:

  • PHPMailer邮件类利用smtp.163.com发送邮件方法
  • PHP mail 通过Windows的SMTP发送邮件失败的解决方案
  • php中通过curl smtp发送邮件
  • php基于socket实现SMTP发送邮件的方法
  • php mailer类调用远程SMTP服务器发送邮件实现方法
  • php使用pear_smtp发送邮件
  • PHP实现支持SSL连接的SMTP邮件发送类
  • php使用smtp发送支持附件的邮件示例
  • PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
  • PHP使用SMTP邮件服务器发送邮件示例

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

PHP自带的mail函数比较蛋疼,在win下配置了sendmail还是无法发送邮件。而使用第三方的pear/mail可以直接通过smtp连接邮件发送服务器。如(smtp.163.com)。从而没有必要在本机上安装sendmail等类似软件。
确保PEAR Mail包已经安装。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

php mailer 是一款很好用的php电子邮件发送类模块,可以调用本地的smtp发送电子邮件,也可以调用远程的smtp发送电子邮件,但是使用时需要注意一些事项,否则就会造成发送失败,或者根本不能调用的情况,本文就我在使用这个类时,遇到的问题和解决办法进行展开,简要说明一下php mailer的用法,及注意事项。

 $subject = "This mail is sent from SMTP.";
$mail_body = "This is the body of the mail which is sent using SMTP.";
$from = "From: From Name <fromaddress@xpertdeveloper.com>"; 
$to = "To: To Name <toaddress@xpertdeveloper.com>"; 
$receiver = "toaddress@xpertdeveloper.com"; 

// Setting up the headers
$headers["From"] = $from; 
$headers["To"] = $to; 
$headers["Subject"] = $subject; 
$headers["Reply-To"] = "reply@address.com"; 
$headers["Content-Type"] = "text/plain; charset=ISO-2022-JP"; 
$headers["Return-path"] = "returnpath@address.com"; 

// Setting up the SMTP setting
$smtp_info["host"] = "smtp.server.com"; 
$smtp_info["port"] = "25"; 
$smtp_info["auth"] = true; 
$smtp_info["username"] = "smtp_user"; 
$smtp_info["password"] = "smtp_password"; 

// Creating the PEAR mail object :
$mail_obj =& Mail::factory("smtp", $smtp_info); 

// Sending the mail now
$mail_sent = $mail_obj->send($receiver, $headers, $mail_body); 

// If any error the see for that here:
if (PEAR::isError($mail_sent)) { print($mail_sent->getMessage());}
TAG标签:
版权声明:本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:php使用pear_smtp发送邮件,mailer类调用远程SMTP服务