如何给多个人发送邮件呢?给一个人可以发了

79720699 2008-03-06 11:45:47
大家好,请问如何给多个人发送邮件呢?给一个人可以发了,outlook里用;分开就可以,但在代码里好象不行.代码如下:

<?php

$subject = 'Test'; //邮件主题
$loc_host="pop.163.com"; //外部邮件pop3地址
$smtp_host = "smtp.163.com"; //外部邮件smtp地址
$smtp_acc = "xxx@163.com"; //发送邮件的帐号
$smtp_pass = "xxxx"; //发送帐号的密码
$from = "管理员"; //显示的发件人名称



send_mail("xxx@163.com",$subject ,"23232<p>",$from,$loc_host,$smtp_host,$smtp_acc,$smtp_pass);




function send_mail($to,$subject = 'No subject',$content, $from = "论坛留言",$loc_host,$smtp_host,$smtp_acc,$smtp_pass) {

global $mail_host,$mail_smtp_host,$mail_smtp_acc,$mail_smtp_pass;

//$content='34343<br><p>234333333';
$bdy=array(decodeHtmlChar($content));


$headers = "Content-type: text/html; charset=gb2312";
$lb = " "; //linebreak
$hdr = @ explode($lb, $headers);

if ($body) {
$bdy = @ preg_replace("/^./", "..", @ explode($lb, $body));
}
$smtp = array (array ("EHLO " . $loc_host . $lb,"995,2620","HELO error: "),
array ("AUTH LOGIN" . $lb,"334","AUTH error:"),
array (@ base64_encode($smtp_acc) . $lb,"334","AUTHENTIFICATION error : "),
array (@ base64_encode($smtp_pass) . $lb, "235", "AUTHENTIFICATION error : ")
);

$smtp[] = array ("MAIL FROM: <" . $from . ">" . $lb,"250","MAIL FROM error: ");
$smtp[] = array ("RCPT TO: <" . $to . ">" . $lb,"250","RCPT TO error: ");
$smtp[] = array ("DATA" . $lb,"354","DATA error: ");
$smtp[] = array ("From: " . $from . $lb,"","");
$smtp[] = array ("To: " . $to . $lb,"","");
$smtp[] = array ("Subject: " . $subject . $lb,"","");

foreach ($hdr as $h) {
$smtp[] = array ($h . $lb,"","");
}

$smtp[] = array ($lb,"","");

if (!empty($bdy)) {
foreach ($bdy as $b) {
$smtp[] = array (
$b . $lb . $lb, "", "");
/// $bdy . $lb, "", "");
}
}

$smtp[] = array ("." . $lb,"250","DATA(end)error: ");
$smtp[] = array ("QUIT" . $lb,"221","QUIT error: ");
$fp = @ fsockopen($smtp_host, 25);
if (!$fp)
echo "<b>发生错误如下:</b>未能连接到主机: " . $smtp_host . "<br>";
while ($result = @ fgets($fp, 1024)) {
if (@ substr($result, 3, 1) == " ") {
break;
}
}

$result_str = "";

foreach ($smtp as $req) {

@ fputs($fp, $req[0]);

if ($req[1]) {

while ($result = @ fgets($fp, 1024)) {
if (@ substr($result, 3, 1) == " ") {
break;
}
};
if (!@ strstr($req[1], @ substr($result, 0, 3))) {
$result_str .= $req[2] . $result . "<br>";
}
}
}

@ fclose($fp);
return $result_str;
}


...全文
1078 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
极地_雪狼 2008-03-07
  • 打赏
  • 举报
回复
最简的的就是循环一下。
79720699 2008-03-07
  • 打赏
  • 举报
回复
我之前是采用了 循环使用send_mail函数,不过这样效率太低 ,呵呵
感谢楼上两位啊
sunday_bj 2008-03-06
  • 打赏
  • 举报
回复
把$to设置成一个数组,然后写多个RCPT TO
shaozi110 2008-03-06
  • 打赏
  • 举报
回复
send_mail("xxx@163.com",$subject ,"23232<p>",$from,$loc_host,$smtp_host,$smtp_acc,$smtp_pass);
在传数据的时候改成传数组
$to_more_array=array('xxx@163.com','xxx@163.com','xxx@163.com','xxx@163.com');

function send_mail($to,$subject = 'No subject',$content, $from = "论坛留言",$loc_host,$smtp_host,$smtp_acc,$smtp_pass)
函数中
用循环把数组输出,付值给$to_more
for($i=0;$i<count($to);$i++)
{
if($i==0)
{
$to_more = $to[$i];
}
$to_more .= ','.$to[$i];
}
//echo $to_more;
便可以达到群发的目的。
或则循环使用send_mail函数
for($i=0;$i<count($to);$i++)
{
send_mail($to[$i],$subject ,"23232<p>",$from,$loc_host,$smtp_host,$smtp_acc,$smtp_pass);
}
这样也可以达到群发的目的
适用人群通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。课程概述通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。。【开发者如何进行快速开发邮件发送系统???本课程系统进行快速研发,项目实战】 部分截图如下:完整版请查看课件或者视频

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧