用php发邮件,想破了头,现在还是发不了〉?? 你2003的IIS要启动SMTP服务。PS:你还是用SMTP的发送类吧~~~~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PS:你还是用SMTP的发送类吧~~~~~~???????????????????/什么意思? sendmail是UNIX下的一个邮件工具{usr/lib/sendmail....},WINDOWS下没有得. 用发送邮件的类,在phpclasses.org有,不过机器必须要有socket库。 建议使用SMTP类,比较好!<? function sendmail($to,$subject, $message,$df_from,$mail_flag) { // $mail_flag为0是文本格式的发送信件 为1是html格式$smtp = " "; //您的SMTP 服务器供应商,可以是域名或IP地址$check = 1; //SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。 if ($check) { $username = "邮箱地址"; //您的email帐号名称 $password = "邮箱密码"; //您的email密码}$s_from = "[email protected]"; //此email 必需是发信服务器上的email //连接服务器 $fp = fsockopen ( $smtp, 25, $errno, $errstr, 60); if (!$fp ) return "联接服务器失败".__LINE__; set_socket_blocking($fp, true ); $lastmessage=fgets($fp,512); if ( substr($lastmessage,0,3) != 220 ) return "错误信息:".$lastmessage.__LINE__; //HELO $yourname = "mail"; if($check == "1") $lastact="EHLO ".$yourname."\r\n"; else $lastact="HELO ".$yourname."\r\n"; fputs($fp, $lastact); $lastmessage == fgets($fp,512); if (substr($lastmessage,0,3) != 220 ) return "错误信息$lastmessage".__LINE__; while (true) { $lastmessage = fgets($fp,512); if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) ) break; } //身份验证 if ($check=="1") { //验证开始 $lastact="AUTH LOGIN"."\r\n"; fputs( $fp, $lastact); $lastmessage = fgets ($fp,512); if (substr($lastmessage,0,3) != 334) return "错误信息$lastmessage".__LINE__; //用户姓名 $lastact=base64_encode($username)."\r\n"; fputs( $fp, $lastact); $lastmessage = fgets ($fp,512); if (substr($lastmessage,0,3) != 334) return "错误信息$lastmessage".__LINE__; //用户密码 $lastact=base64_encode($password)."\r\n"; fputs( $fp, $lastact); $lastmessage = fgets ($fp,512); if (substr($lastmessage,0,3) != "235") return "错误信息$lastmessage".__LINE__; } //FROM: $lastact="MAIL FROM: $s_from" . "\r\n"; fputs( $fp, $lastact); $lastmessage = fgets ($fp,512); if (substr($lastmessage,0,3) != 250) return "错误信息$lastmessage".__LINE__; //TO: $lastact="RCPT TO: $to" . "\r\n"; fputs( $fp, $lastact); $lastmessage = fgets ($fp,512); if (substr($lastmessage,0,3) != 250) return "错误信息$lastmessage".__LINE__; //DATA $lastact="DATA\r\n"; fputs($fp, $lastact); $lastmessage = fgets ($fp,512); if (substr($lastmessage,0,3) != 354) return "错误信息$lastmessage".__LINE__; if($mail_flag==1)//发送格式为html { $head = "MIME-Version: 1.0\r\n"; $head .= "Content-type: text/html; charset=GB2312\r\n"; } //处理Subject头 $head="Subject: $subject\r\n".$head; $message = $head."\r\n".$message; //处理From头 $head="From: $df_from\r\n"; $message = $head.$message; //处理To头 $head="To: $to\r\n"; $message = $head.$message; //加上结束串 $message .= "\r\n.\r\n"; //发送信息 fputs($fp, $message); $lastact="QUIT\r\n"; fputs($fp,$lastace); fclose($fp); return 0;} ?> 呵呵,我有一个类已经测试过,可以用,功能比较强大,可以用smtp、qmail、sendmail多种方式发送邮件,还能发送html格式的邮件。可以到我的blog,alv.boei.cn上下载 也是说,再windows环境下,是无法用mail法邮件的?只有用类? sendmail_path = sendmail -t -i注释掉这一行。 也是说,再windows环境下,是无法用mail法邮件的?只有用类? 顶一个再问:windows环境下,是无法用mail法邮件的?只有用类? WINDOWS 下也可以用MAIL前提PHP.INI 中设置 smtp_address= localhost并正确设置本机的 SMTP 发件设置(不得加用户认证)就OK了~~~~~ windows下面比较复杂,最好象上面说的写个类。 Windows 2000用户 安装设置服务端 Windows XP和2000本身就拥有构件SMTP服务器的功能,只是一般还没有安装。选择“控制面板→添加/删除程序→添加/删除Windows组件”,弹出“Windows组件向导”对话框,在其中双击“Internet信息服务(IIS)”项,就会打开详细选择项,选中“SMTP Service”,按“确定”,插入Windows XP安装盘进行安装 安装好SMTP服务器后,选择“控制面板→性能和维护→管理工具→Internet信息服务”打开Internet信息服务设置窗口,在窗口左侧点击本地计算机名,展开本地计算机目录,可以看到有两个分支“Wed站点”和“默认SMTP虚拟服务器”。在“默认SMTP虚拟服务器”上点击鼠标右键选择“属性”,打开“默认SMTP虚拟服务器属性”窗口。 “常规”选项卡主要设置IP地址,单击IP地址下拉项选择“127.0.0.1”,表示指向本地计算机IP地址,其他项使用默认即可。如果你是局域网接入,拥有固定IP地址,那么IP地址就应该选择相应的地址 “访问”选项卡中设置访问权限。单击“身份验证”,选择“匿名访问”,表示任何用户都可以发送,其他两项不用选择;单击“连接控制”中的“连接”和“中段限制”中的“中断”,选中“仅以下列表除外”,表示可以许接入所有用户的访问。 “邮件”选项卡中设置邮件传输条件及限制,“限制邮件大小为”等四个选项可以使用默认值,无须更改; “将未传递报告的副本发送到”可将发送不成功的邮件返回发件人,并且写明不成功的原因;“死信目录”设置没有发送成功的邮件被存放的位置。 “传输”选项中设置邮件传递时间,这里不用修改,使用默认值;“LDAP路由”选项用来指定服务器使用的目录服务器标识和属性,这里也不用启动它。 “安全”选项中设置使用发送服务器的有权用户,默认用户是“Administrators”,你可以单击“添加”添加使用用户。 一切设置好后,你就拥护了自己的邮件发送服务器了! SMTP装好以后 你应该是在WINDOW2K下,你找到PHP。INI文件 在C:\WINNT下打开找到下面这些行[mail function]; For Win32 only.SMTP = 10.0.0.9 -------》替换成你的IP,10.0.0.9是偶的IP了 :); For Win32 only.sendmail_from = [email protected] ---》发件人信息 然后重新启动APACHE 求救:怎样循环读取数据,并输出只需要的数据 pagination分页 问题 php+iis+mysql/mssql的配置问题 散分 300 关于MYSQL 查询 的问题。 如何批量插入数据! Apache必须安装在C盘吗 如何选中下拉列表的一项记录; setcookie的作用域问题 php网站做手机短信 php兄弟们,$_SERVER['HTTP_RAW_POST_DATA'];为什么为空啊? 求助:大家看一下这个www.fatwallet.com,英文的哦:)
什么意思?
<? function sendmail($to,$subject, $message,$df_from,$mail_flag)
{
// $mail_flag为0是文本格式的发送信件 为1是html格式
$smtp = " "; //您的SMTP 服务器供应商,可以是域名或IP地址
$check = 1; //SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。
if ($check) {
$username = "邮箱地址"; //您的email帐号名称
$password = "邮箱密码"; //您的email密码
}$s_from = "[email protected]"; //此email 必需是发信服务器上的email
//连接服务器
$fp = fsockopen ( $smtp, 25, $errno, $errstr, 60);
if (!$fp ) return "联接服务器失败".__LINE__;
set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return "错误信息:".$lastmessage.__LINE__;
//HELO
$yourname = "mail";
if($check == "1") $lastact="EHLO ".$yourname."\r\n";
else $lastact="HELO ".$yourname."\r\n";
fputs($fp, $lastact);
$lastmessage == fgets($fp,512);
if (substr($lastmessage,0,3) != 220 ) return "错误信息$lastmessage".__LINE__;
while (true) {
$lastmessage = fgets($fp,512);
if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )
break;
}
//身份验证
if ($check=="1") {
//验证开始
$lastact="AUTH LOGIN"."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "错误信息$lastmessage".__LINE__;
//用户姓名
$lastact=base64_encode($username)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "错误信息$lastmessage".__LINE__;
//用户密码
$lastact=base64_encode($password)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != "235") return "错误信息$lastmessage".__LINE__;
}
//FROM:
$lastact="MAIL FROM: $s_from" . "\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "错误信息$lastmessage".__LINE__;
//TO:
$lastact="RCPT TO: $to" . "\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "错误信息$lastmessage".__LINE__;
//DATA
$lastact="DATA\r\n";
fputs($fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return "错误信息$lastmessage".__LINE__;
if($mail_flag==1)//发送格式为html
{
$head = "MIME-Version: 1.0\r\n";
$head .= "Content-type: text/html; charset=GB2312\r\n";
}
//处理Subject头
$head="Subject: $subject\r\n".$head;
$message = $head."\r\n".$message;
//处理From头
$head="From: $df_from\r\n";
$message = $head.$message;
//处理To头
$head="To: $to\r\n";
$message = $head.$message;
//加上结束串
$message .= "\r\n.\r\n";
//发送信息
fputs($fp, $message);
$lastact="QUIT\r\n";
fputs($fp,$lastace);
fclose($fp);
return 0;
} ?>
注释掉这一行。
再问:windows环境下,是无法用mail法邮件的?只有用类?
PHP.INI 中设置
smtp_address= localhost并正确设置本机的 SMTP 发件设置(不得加用户认证)就OK了~~~~~
SMTP装好以后 你应该是在WINDOW2K下,你找到PHP。INI文件 在C:\WINNT下
打开找到下面这些行
[mail function]
; For Win32 only.
SMTP = 10.0.0.9 -------》替换成你的IP,10.0.0.9是偶的IP了 :); For Win32 only.
sendmail_from = [email protected] ---》发件人信息 然后重新启动APACHE