提示很清楚,不能连接smtp服务器.
尝试,用outlook测试一下,看能不能用.
尝试,用outlook测试一下,看能不能用.
解决方案 »
- phpStudy V1.1.5发布
- 如何把新添加的记录 移到表头?
- 关于php的syslog函数输出日志问题
- 请教,上传的文件无法移动,怀疑是路径问题
- 中国强人的php,适合学生在网吧用的Apache PHP MySQL phpMyAdmin绿色安装程序只有5m大小,送给到处找php免费空间的测试的同道们
- zh_cn,gb2312,cp936,euc-cn的区别。
- 新手提问,请高手指教。php的登录验证问题
- 如何将MYSQL的数据输出到EXCEL?
- 为什么,我在预览html文件时,我的系统就没有响应了,
- passing by reference与 passing by value的区别
- array_rand()效率 问题!
- 权限管理问题,感觉矛盾!
尝试,用outlook测试一下,看能不能用.
是不是yahoo对smtp的使用是有条件的???
函数调用:send_mail($email_to, $email_subject, $email_message);
$email_to 收件邮箱 多个邮箱使用半角“,”隔开,例如:[email protected],[email protected],[email protected]
$email_subject 邮件标题
$email_message 邮件正文
function send_mail($email_to, $email_subject, $email_message) {
$mailcfg['server'] = 'mail.ww8ww.cn'; //邮件服务器地址
$mailcfg['port'] = '25'; //邮件服务器端口
$mailcfg['auth'] = 1;
$mailcfg['auth_username'] = '[email protected]'; //登录名
$mailcfg['auth_password'] = '密码'; //登录密码
$charset = "gbk"; //字符集
$fromname = "天下网"; //发件人名
$frommail = "[email protected]"; //发件人邮箱 $email_subject = '=?'.$charset.'?B?'.base64_encode(str_replace("\r", '', str_replace("\n", '', $email_subject))).'?=';
$email_message = chunk_split(base64_encode(str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $email_message)))))));
$email_from = '=?'.$charset.'?B?'.base64_encode($fromname)."?= <$frommail>"; $headers = "From: $email_from\nMIME-Version: 1.0\nContent-type: text/plain; charset=$charset\nContent-Transfer-Encoding: base64\n";
$nowdate = date("20ynjHis"); //服务器时间
if(!$fp = fsockopen($mailcfg['server'], $mailcfg['port'], $errno, $errstr, 30)) {
return "Unable to connect to the SMTP server";
exit();
}
stream_set_blocking($fp, true); $lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != '220') {
return "CONNECT".$lastmessage;
exit();
} fputs($fp, ($mailcfg['auth'] ? 'EHLO' : 'HELO')." discuz\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
return "HELO/EHLO".$lastmessage;
exit();
} while(1) {
if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {
break;
}
$lastmessage = fgets($fp, 512);
} if($mailcfg['auth']) {
fputs($fp, "AUTH LOGIN\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 334) {
return "AUTH LOGIN".$lastmessage;
exit();
} fputs($fp, base64_encode($mailcfg['auth_username'])."\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 334) {
return "USERNAME".$lastmessage;
exit();
} fputs($fp, base64_encode($mailcfg['auth_password'])."\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 235) {
return "PASSWORD".$lastmessage;
exit();
}// $email_from = $mailcfg['from'];
} fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from).">\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) {
fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from).">\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) {
return "MAIL FROM".$lastmessage;
exit();
}
} foreach(explode(',', $email_to) as $touser) {
$touser = trim($touser);
if($touser) {
fputs($fp, "RCPT TO: <$touser>\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) {
fputs($fp, "RCPT TO: <$touser>\r\n");
$lastmessage = fgets($fp, 512);
return "RCPT TO".$lastmessage;
exit();
}
}
}
//本段设置群发邮件时显示收件人内容,删除本段则显示所有收件邮箱---began
list($email_to1,$email_to2)=split(",",$email_to);
if ($email_to2){
$email_to = '天下网会员';
}
//本段设置群发邮件时显示收件人内容,删除本段则显示所有收件邮箱---over
fputs($fp, "DATA\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 354) {
return "DATA".$lastmessage;
exit();
} fputs($fp, "To: $email_to\r\nSubject: $email_subject\r\n$headers\r\n$email_message\r\n.\r\n");
sleep(1);
fputs($fp, "QUIT\r\n");
}
像模拟outlook发送等等直接传送很多时候只会被送到垃圾邮件 =.=
outlook都不能发送, phpmailer当然也不可以了.