用PHP发邮件(使用mail函数) 这位兄弟想说什么?想教大家MAIL的使用吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本原理就是这样,如果看了邮件的源码就知道怎么发邮件了:http://expert.csdn.net/Expert/topic/2052/2052411.xml---function getRandomBoundary($offset = 0){ srand(time()+$offset); $Boundary = md5(rand()); $Boundary = strtoupper($Boundary); return $Boundary;}function getContentType($inFileName){ $inFileName = basename($inFileName); if(strrchr($inFileName, ".") == false) { return "application/octet-stream"; } $extension = strrchr($inFileName, "."); switch($extension) { case ".gz": return "application/x-gzip"; case ".pdf": return "application/pdf"; case ".tar": return "application/x-tar"; case ".zip": return "application/zip"; case ".doc": return "application/msword"; case ".mdb": return "application/msaccess"; case ".mp3": return "audio/mpeg"; case ".mid": return "audio/mid"; case ".gif": return "image/gif"; case ".jpg": return "image/jpeg"; case ".htm": return "text/html"; case ".html": return "text/html"; case ".txt": return "text/plain"; default: return "application/octet-stream"; } return "application/octet-stream";}function getAttachment($inFileLocation, $FileName){ $outAttachmentHeader = ""; $contentType = getContentType($FileName); if(ereg("text",$contentType)) { $outAttachment .= "Content-Type:".$contentType. ";\n\t"; $outAttachment .= "name=\"".basename($FileName). "\"\n"; $outAttachment .= "Content-Transfer-Encoding: 7bit\n"; $outAttachment .= "Content-Disposition: attachment;\n\t"; $outAttachment .= "filename=\"".basename($FileName)."\"\n\n\n"; $fp=fopen($inFileLocation,"r"); if($fp) { $outAttachmentBody=fread($fp,filesize($inFileLocation)); $outAttachmentBody=chunk_split($outAttachmentBody); fclose($fp); } $outAttachment.=$outAttachmentBody."\n"; return $outAttachment; } else { $outAttachment .= "Content-Type: ".$contentType. ";\n\t"; $outAttachment .= "name=\"".basename($FileName)."\"\n"; $outAttachment .= "Content-Transfer-Encoding: base64\n"; $outAttachment .= "Content-Disposition: attachment;\n\t"; $outAttachment .= "filename=\"".basename($FileName). "\"\n\n\n"; $fp=fopen($inFileLocation,"r"); if($fp) { $outAttachmentBody=fread($fp,filesize($inFileLocation)); $outAttachmentBody=base64_encode($outAttachmentBody); $outAttachmentBody=chunk_split($outAttachmentBody); fclose($fp); } $outAttachment.=$outAttachmentBody."\n"; return $outAttachment; } return false;}$bodyBoundary=getRandomBoundary(1);$bodyBoundary2=getRandomBoundary(2);$mailTo = "[email protected]";//发邮件,带附件除了$mailHeader = "From: [email protected]\n";$mailHeader.="Mime-Version:1.0\n";$mailHeader.="Content-Type:multipart/mixed;\n\t";$mailHeader.="boundary=\"$bodyBoundary\"\n\n";//剩下的都放到$mailBody里:$mailBody ="This is a multi-part message in MIME format.\n\n";$mailBody.="--$bodyBoundary\n";$mailBody.="Content-Type: multipart/alternative;\n\t";$mailBody.="boundary=\"".$bodyBoundary2."\"\n\n\n";$Body = chunk_split(base64_encode($Body));//邮件正文$mailBody.="--$bodyBoundary2\n";$mailBody.="Content-Type: text/html;\nContent-Transfer-Encoding: base64\n\n";$mailBody.=$Body."\n\n";$mailBody.="--".$bodyBoundary2."--\n\n";//正文结束if(!empty($_FILES["attach"]["name"])){ $mailBody.="--".$bodyBoundary."\n"; $mailBody.=getAttachment($attach, $_FILES['attach']['name'])."\n"; //邮件附件}$mailBody.="--".$bodyBoundary."--"."\n";//邮件结束mail($mailTo,$mailSubject,$mailBody,$mailHeader);//发送…… to: Mistruster(弱智d)你第二次粘贴的是利用mime协议发送附件的一个大类,主要是生成代码。包括头,主题等。发送附件是先将附件编码,一般是base64 或者7 bit,接受到后再解码。 我也是刚学了点,共同进步~关于邮件头的资料,建议到http://www.yesky.com/SoftChannel/72347873798258688/20030526/1703237.shtml看看 http://www.mistruster.com/mail/我做的电子邮件系统,我现在在研究怎么发送真正的多媒体邮件,带背景音乐比较容易,就是在附件里放个mid文件,然后在邮件正文里做连接……可是一般的邮件系统好像不能比较好的接收…… http://prdownloads.sourceforge.net/phpmailer/phpmailer-1.70.tar.gz?download试试这个对你有没有帮助! Call to undefined function: mail() 我使用出现上面的错误,请问,是什么原因呢?谢谢php4.3.0+apache1.3.28+redhat 8.0+mysql 4.0.15. 大家们,谁能帮我写一个需要难的smtp发信件的程序(信件可以是html)格式,我这里有原程序,但是只能发文本程序,谁能帮我改一下,能发html格式的,谢谢啦~~------------------------------------------------function sendmail($to,$subject, $message ) { $smtp = "211.152.33.113"; //您的SMTP 服务器供应商,可以是域名或IP地址$check = 1; //SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。 if ($check) { $username = "[email protected]"; //您的email帐号名称 $password = "8886898"; //您的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__; //处理Subject头 $head="Subject: $subject\r\n"; $message = $head."\r\n".$message; //处理From头 $head="From: [email protected]\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;} 这个 哪有问题 怎么点击提交 一下子没反应了 谢了 谁帮我看看这是什么错误? PHP 上传多个文件的问题 请问getcvar这个函数是什么意思,网上的解释不是很清,谢谢了 问一个类似防盗链的问题。。。 怎样将数组内容以6列n行的形式在表格中显示出来? 修改php.ini后与phpinfo中看到的不一致! 怎样获取页面提交过来的输入框的值 救命啊 php -str_replace无法遍历替换 各位帮忙,帮我改一下程序,好吗?? php如何添加js?
http://expert.csdn.net/Expert/topic/2052/2052411.xml
---
function getRandomBoundary($offset = 0)
{
srand(time()+$offset);
$Boundary = md5(rand());
$Boundary = strtoupper($Boundary);
return $Boundary;
}
function getContentType($inFileName)
{
$inFileName = basename($inFileName);
if(strrchr($inFileName, ".") == false)
{
return "application/octet-stream";
}
$extension = strrchr($inFileName, ".");
switch($extension)
{
case ".gz": return "application/x-gzip";
case ".pdf": return "application/pdf";
case ".tar": return "application/x-tar";
case ".zip": return "application/zip";
case ".doc": return "application/msword";
case ".mdb": return "application/msaccess";
case ".mp3": return "audio/mpeg";
case ".mid": return "audio/mid";
case ".gif": return "image/gif";
case ".jpg": return "image/jpeg";
case ".htm": return "text/html";
case ".html": return "text/html";
case ".txt": return "text/plain";
default: return "application/octet-stream";
}
return "application/octet-stream";
}function getAttachment($inFileLocation, $FileName)
{
$outAttachmentHeader = "";
$contentType = getContentType($FileName);
if(ereg("text",$contentType))
{
$outAttachment .= "Content-Type:".$contentType. ";\n\t";
$outAttachment .= "name=\"".basename($FileName). "\"\n";
$outAttachment .= "Content-Transfer-Encoding: 7bit\n";
$outAttachment .= "Content-Disposition: attachment;\n\t";
$outAttachment .= "filename=\"".basename($FileName)."\"\n\n\n";
$fp=fopen($inFileLocation,"r");
if($fp)
{
$outAttachmentBody=fread($fp,filesize($inFileLocation));
$outAttachmentBody=chunk_split($outAttachmentBody);
fclose($fp);
}
$outAttachment.=$outAttachmentBody."\n";
return $outAttachment;
}
else
{
$outAttachment .= "Content-Type: ".$contentType. ";\n\t";
$outAttachment .= "name=\"".basename($FileName)."\"\n";
$outAttachment .= "Content-Transfer-Encoding: base64\n";
$outAttachment .= "Content-Disposition: attachment;\n\t";
$outAttachment .= "filename=\"".basename($FileName). "\"\n\n\n";
$fp=fopen($inFileLocation,"r");
if($fp)
{
$outAttachmentBody=fread($fp,filesize($inFileLocation));
$outAttachmentBody=base64_encode($outAttachmentBody);
$outAttachmentBody=chunk_split($outAttachmentBody);
fclose($fp);
}
$outAttachment.=$outAttachmentBody."\n";
return $outAttachment;
}
return false;
}
$bodyBoundary=getRandomBoundary(1);
$bodyBoundary2=getRandomBoundary(2);
$mailTo = "[email protected]";
//发邮件,带附件除了
$mailHeader = "From: [email protected]\n";
$mailHeader.="Mime-Version:1.0\n";
$mailHeader.="Content-Type:multipart/mixed;\n\t";
$mailHeader.="boundary=\"$bodyBoundary\"\n\n";
//剩下的都放到$mailBody里:
$mailBody ="This is a multi-part message in MIME format.\n\n";
$mailBody.="--$bodyBoundary\n";
$mailBody.="Content-Type: multipart/alternative;\n\t";
$mailBody.="boundary=\"".$bodyBoundary2."\"\n\n\n";
$Body = chunk_split(base64_encode($Body));//邮件正文
$mailBody.="--$bodyBoundary2\n";
$mailBody.="Content-Type: text/html;\nContent-Transfer-Encoding: base64\n\n";
$mailBody.=$Body."\n\n";
$mailBody.="--".$bodyBoundary2."--\n\n";//正文结束
if(!empty($_FILES["attach"]["name"]))
{
$mailBody.="--".$bodyBoundary."\n";
$mailBody.=getAttachment($attach, $_FILES['attach']['name'])."\n";
//邮件附件
}
$mailBody.="--".$bodyBoundary."--"."\n";//邮件结束
mail($mailTo,$mailSubject,$mailBody,$mailHeader);//发送……
我也是刚学了点,共同进步~
关于邮件头的资料,建议到http://www.yesky.com/SoftChannel/72347873798258688/20030526/1703237.shtml看看
我做的电子邮件系统,
我现在在研究怎么发送真正的多媒体邮件,
带背景音乐比较容易,就是在附件里放个mid文件,然后在邮件正文里做连接……
可是一般的邮件系统好像不能比较好的接收……
function sendmail($to,$subject, $message )
{ $smtp = "211.152.33.113"; //您的SMTP 服务器供应商,可以是域名或IP地址
$check = 1; //SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。
if ($check) {
$username = "[email protected]"; //您的email帐号名称
$password = "8886898"; //您的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__;
//处理Subject头
$head="Subject: $subject\r\n";
$message = $head."\r\n".$message;
//处理From头
$head="From: [email protected]\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;
}