raksmart活动促销

分享

写回答

发帖

讨论+求助-----电子邮件问题!

BlueHost BlueHost 6437 人阅读 | 2 人回复

发表于 2007-3-30 08:28:02 | 显示全部楼层 |阅读模式

昨天试了下BLUEHOST的邮件功能感觉非常不错!可是在设置OUTLOOK的时候用BH录象上的方法不能连接到STMP服务器!,经过冥思苦想,终于发现,如果在设置OUTLOOK过程中使用SSL加密连接,就一切正常(设置过程中点其他设置-->高级,在SMTP下方勾选"此服务器要求加密连接(SSL)"),不知大家的BH不是这样!
可是,如果我用PHP连接的时候,程序该怎样修改成SSL加密连接!程序如下!!

<?
$M_db= new Mailconfig(
array(
  'host' => "mail@maximumspeed.biz",        //发件服务器的地址
  'port' =>  25,              //发件服务器的端口一般默认为25   
  'auth' => "极速论坛",         //发件人姓名
  'isck' => 1,                                        //发件服务器需要密码验证 .
  'from' => "askme@maximumspeed.biz", //发件人EMAIL
  'user' => "askme+maximumspeed.biz", //发件人帐号名称
  'pass' => "sdeck001",  //发件人帐号密码
)
);
/*如果需要在发件时设置可将以下保存为公用文件mail.inc.php 上面七个变量在发件前设置.*/
Class Mailconfig {
var $smtp;
function Mailconfig($smtp=array()){
  $this->smtp['host'] = $smtp['host'];
  $this->smtp['port'] = $smtp['port'];
  $this->smtp['auth'] = $smtp['auth'];
  $this->smtp['isck'] = $smtp['isck'];
  $this->smtp['from'] = $smtp['from'];
  $this->smtp['user'] = $smtp['user'];
  $this->smtp['pass'] = $smtp['pass'];
}
}
function sendemail($toemail,$subject,$message,$html=1){
global $M_db,$sendtoname;
$M_db->smtp['html']=$html;
$db_charset="gb2312";
if(!$fp=fsockopen($M_db->smtp['host'],$M_db->smtp['port'],&$errno,&$errstr,30)) return false;
if(substr(fgets($fp,512),0,3)!="220") return false;
if($M_db->smtp['isck']) {
  fwrite($fp,"EHLO mobeiguaishou qq4620498\r\n");
  while($rt=strtolower(fgets($fp,512))){
   if(strpos($rt,"-")!==3 || empty($rt)){
    break;
   }elseif(strpos($rt,"2")!==0){
    return false;
   }
  }
  fwrite($fp, "AUTH LOGIN \r\n");
  if(substr(fgets($fp,512),0,3) != 334) return false;
  fwrite($fp, base64_encode($M_db->smtp['user'])." \r\n");
  if(substr(fgets($fp,512),0,3) != 334) return false;
  fwrite($fp, base64_encode($M_db->smtp['pass'])." \r\n");
  if(substr(fgets($fp,512),0,3) != 235) return false;
} else {
  fwrite($fp, "HELO mobeiguaishou qq4620498\r\n");
}
$from = $M_db->smtp['from'];
$from = preg_replace("/.*\<(.+?)\>.*/", "\\1", $from);
fwrite($fp, "MAIL FROM: <$from>\r\n");
if(substr(fgets($fp,512),0,3) != 250){
  return false;
}
fwrite($fp, "RCPT TO: <$toemail>\r\n");
if(substr(fgets($fp,512),0,3) != 250){
  return false;
}
fwrite($fp, "DATA\r\n");
if(substr(fgets($fp,512),0,3) != 354){
  return false;
}
$subject = str_replace("\n",' ',$subject);
$msg  = "Date: ".Date("r")."\r\n";
$msg .= "From: =?$db_charset?B?".base64_encode($M_db->smtp['auth'])."?=<$from>\r\n";
$msg .= "To: =?$db_charset?B?".base64_encode($sendtoname)."?=<$toemail>\r\n";
$msg .= "Subject: =?$db_charset?B?".base64_encode($subject)."?=\r\n";
$msg .= "X-mailer: Php Auto SendMail for mobeiguaishou qq4620498\r\n";
$msg .= "Mime-Version: 1.0\r\n";
if ($M_db->smtp['html'])
  $msg .= "Content-Type: text/html;\r\n";
else
  $msg .= "Content-Type: text/plain;\r\n";
$msg .= "\tcharset=\"$db_charset\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n\r\n";
$msg .= base64_encode($message)."\r\n.\r\n";
fwrite($fp, $msg);
fwrite($fp, "QUIT\r\n");
fclose($fp);
return true;
}


      if (sendemail("scyyya@163.com","Hello!Your verification Code","Mr")){   //发到163油箱
   echo "已发送,请查收";
       }else{
     echo "有错误!";
       }
?>


*注:按网上说的传将程序上传服务器,'host' => "mail@maximumspeed.biz", 改为 'host' => "localhost", 根本不行!

也请教各位高手我该怎么改才能正确发送!!!

回答|共 2 个

大漠孤狼

发表于 2007-3-30 09:20:01 | 显示全部楼层

这个问题问问bluehost吧,邮件方面的不太清楚,最近挺多人有这个问题

cooo999

发表于 2007-3-30 10:07:18 | 显示全部楼层

对啊!就是好多都在问,但基本没解决!昨天把原因找到了!原来要SSL加密连接才行,但是程序不知道怎么实现

[ 本帖最后由 cooo999 于 2007-3-30 10:08 AM 编辑 ]

大象无形

发表于 2007-3-31 20:34:15 | 显示全部楼层

楼上的能否把具体方法说下,方便后来人,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则