1、利用自己的服务器发送邮件(建议大家不使用此方法,容易被对方的邮件系统自动转入垃圾邮件中)
此方法需要自己的服务器已装IIS并开启了SMTP Service。
开启方法:“控制面板” ——> “添加或删除程序” ——> “添加/删除windows组件(A)” ——> 双击“Internet 信息服务(IIS)” ——> 勾选“SMTP Service” —— > “确定” ——> “下一步”
mail(to,subject,message,headers,parameters);
参数 | 描述 |
---|---|
to | 必需。规定 email 接收者。 |
subject | 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。 |
message | 必需。定义要发送的消息。应使用 LF (/n) 来分隔各行。 |
headers | 可选。规定附加的标题,比如 From、Cc 以及 Bcc。应当使用 CRLF (/r/n) 分隔附加的标题。 |
parameters | 可选。对邮件发送程序规定额外的参数。 |
例:
<?php
$to = "tianliao1988@21cn.com";
$subject = "试验邮件";
$message = "试验一下看看能不能发出来";
$from = "281877650@qq.com";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
2、利用别人的邮件服务器发送邮件
此方法需要知道对方的SMTP 服务器地址(如:QQ的SMTP服务器地址是smtp.qq.com)和端口号(默认为25),此外,你还要在此站上有可正常运行帐号和密码。
<?php
if (!$fp = @fsockopen("smtp.qq.com",25,$errorno,$errorstr,30))//打开一个网络的socket连结
{
echo "打开连接失败!";
exit;
}
stream_set_blocking($fp, true);
fputs($fp,"EHLO qq.com/r/n");//连接
fputs($fp,"AUTH LOGIN/r/n");//发送标识
$maildelimiternum = 1;// 邮件头的分隔符,0=使用 LF 作为分隔符,1=使用 CRLF 作为分隔符
$maildelimiter = !empty($maildelimiternum) ? "/r/n" : "/n";
$charset = "gbk";//编码
$user = base64_encode("281877650@qq.com");//帐号 base64编码
$pass = base64_encode("×××");//密码 base64编码
$from = "281877650@qq.com";//发件人地址(选填)
$touser = "tianliao1988@21cn.com";//收件人地址
$subject = "试哈子";//标题
$content = "看看能不能行";//内容
$headers = "MIME-Version: 1.0{$maildelimiter}Content-type: text/plain; charset=".$charset."{$maildelimiter}{$maildelimiter}";//头文件
fputs($fp,$user."/r/n");//发送帐号
fputs($fp,$pass."/r/n");//发送密码
fputs($fp, "MAIL FROM: <".preg_replace("/.*/<(.+?)/>.*/", "//1", $from).">/r/n");//发信人
fputs($fp, "RCPT TO: <$touser>/r/n");//收信人
fputs($fp,"DATA/r/n");//收信人已标识,可以发送内容
$sub = "To:我的好朋友<".$touser.">/r/n";//发信内容,发往/
$sub .= "From:田辽<".$from.">/r/n";//发信内容,来自/
$sub .= "Subject:".$subject."/r/n";//标题
$sub .= $headers;//载入头文件
$sub .= $content;//内容
$sub .= "/r/n./r/n";//结束
fputs($fp,"$sub/r/n");//发信
fputs($fp,"QUIT/r/n");//退出
echo "发送成功!";
?>