php 发送邮件的问题 请教下各位大大,php中如何快速循环群发邮件呢?我目前用的mail()函数,感觉不好用,而且感觉这个邮件地址不能太多,一次copy了100个可能会出问题.目前php中发送邮件最好的方法是什么呢?能不能给个例子,讲解下.请指点,不胜感激. 多谢多谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个传送门~里面有我之前写的现成的smtp邮件发送类~~,发送多人的话用,号分隔联系人地址!http://topic.csdn.net/u/20101105/15/ac661510-426c-41d1-8bdf-f7c56988e6b4.html希望对你有所帮助! 这是我用的类,你可以借鉴<?php//$Mail->set("發件郵箱SMTP服務器地址", "發件郵箱登陸名", "發件郵箱登錄密碼");//Echo $Mail->send("收件人mail(多个地址逗号隔开)","邮件标题","邮件内容(可包含HTML)","发信人mail");Class Sendmail{ Function __construct(){ $this->set(); $this->auth = 1; } Function set($server=YJ_SysMail_Smtp,$user="",$password=YJ_SysMail_Pass,$port=YJ_SysMailPort,$type=1,$mailusername=0){ $user=($user=="")?SubStr(YJ_SysMail,0,Stripos(YJ_SysMail,"@")):$user; $this->type = $type; $this->server = $server; $this->port = $port; $this->user = $user; $this->password = $password; $this->mailusername = $mailusername; } Function Send($email_to, $email_subject, $email_message, $email_from = ''){ $email_subject = '=?utf-8?B?'.base64_encode(str_replace("\r", '', $email_subject)).'?='; $email_message = 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 = $email_from == '' ? '=?utf-8?B?'.base64_encode(YJ_SysName)."?= <".YJ_SysMail.">" : (preg_match('/^(.+?) \<(.+?)\>$/',$email_from, $from) ? '=?utf-8?B?'.base64_encode($from[1])."?= <$from[2]>" : $email_from); $emails = explode(',', $email_to); Foreach($emails as $touser){ $tousers[] = preg_match('/^(.+?) \<(.+?)\>$/',$touser, $to) ? ($this->mailusername ? '=?utf-8?B?'.base64_encode($to[1])."?= <$to[2]>" : $to[2]) : $touser; } $email_to = implode(',', $tousers); $headers = "MIME-Version: 1.0\r\nTo: {$email_to}\r\nFrom: {$email_from}<{$email_from}>\r\nX-Priority: 3\r\nX-Mailer: egLive \r\nDate: ".date("r")."\r\nContent-type: text/html; charset=UTF-8\r\n"; IF($this->type == 1){ Return $this->smtp($email_to, $email_subject, $email_message, $email_from, $headers); }ElseIF($this->type == 2){ Return @mail($email_to, $email_subject, $email_message, $headers); }Else{ ini_set('SMTP', $this->server); ini_set('smtp_port', $this->port); ini_set('sendmail_from', $email_from); Return @mail($email_to, $email_subject, $email_message, $headers); } } Function smtp($email_to, $email_subject, $email_message, $email_from = '', $headers = ''){ IF(!$fp = @fsockopen($this->server, $this->port, $errno, $errstr, 10)){ $this->errorlog('SMTP', "($this->server:$this->port) CONNECT - Unable to connect to the SMTP server", 0); return false; } stream_set_blocking($fp, true); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != '220'){ $this->errorlog('SMTP', "$this->server:$this->port CONNECT - $lastmessage", 0); return false; } fputs($fp, ($this->auth ? 'EHLO' : 'HELO')." Phpcms\r\n"); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250){ $this->errorlog('SMTP', "($this->server:$this->port) HELO/EHLO - $lastmessage", 0); return false; } While(1){ IF(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)){ break; } $lastmessage = fgets($fp, 512); } fputs($fp, "AUTH LOGIN\r\n"); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != 334){ $this->errorlog('SMTP', "($this->server:$this->port) AUTH LOGIN - $lastmessage", 0); return false; } fputs($fp, base64_encode($this->user)."\r\n"); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != 334){ $this->errorlog('SMTP', "($this->server:$this->port) USERNAME - $lastmessage", 0); return false; } fputs($fp, base64_encode($this->password)."\r\n"); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != 235){ $this->errorlog('SMTP', "($this->server:$this->port) PASSWORD - $lastmessage", 0); return false; } 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){ $this->errorlog('SMTP', "($this->server:$this->port) MAIL FROM - $lastmessage", 0); return false; } } $email_tos = array(); $emails = explode(',', $email_to); Foreach($emails as $touser){ $touser = trim($touser); IF($touser){ fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != 250){ fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); $lastmessage = fgets($fp, 512); $this->errorlog('SMTP', "($this->server:$this->port) RCPT TO - $lastmessage", 0); return false; } } } fputs($fp, "DATA\r\n"); $lastmessage = fgets($fp, 512); IF(substr($lastmessage, 0, 3) != 354){ $this->errorlog('SMTP', "($this->server:$this->port) DATA - $lastmessage", 0); } $headers .= 'Message-ID: <'.gmdate('YmdHs').'.'.substr(md5($email_message.microtime()), 0, 6).rand(100000, 999999).'@'.$_SERVER['HTTP_HOST'].">\r\n"; fputs($fp, "Date: ".gmdate('r')."\r\n"); fputs($fp, "To: ".$email_to."\r\n"); fputs($fp, "Subject: ".$email_subject."\r\n"); fputs($fp, $headers."\r\n"); fputs($fp, "\r\n\r\n"); fputs($fp, "$email_message\r\n.\r\n"); $lastmessage = fgets($fp, 512); fputs($fp, "QUIT\r\n"); return true; } Function errorlog($type, $message, $is){ $this->error[] = array($type, $message, $is); } Function Mailmess($Mess=""){ Return "<style>*{font-family:Verdana;font-size:13px;}</style> <table cellpadding='5' cellspacing='1' border='0' width='750' style='background-color:#fff;border:1px solid #3b5998;padding:15px;'> <tr><td style='background:#3b5998;color:#fff;font-weight:bold;font-size:14px;'>".YJ_SysCnname." - ".YJ_SysName."</td></tr> <tr><td>{$Mess}</td></tr> <tr><td style='border-top:1px dashed gray;'><span style='color:gray;'>該郵件由軟體<a href='http://www.7di.net' target='_blank'>".YJ_SysName."</a>自動發送,如需技術支持請發信至".YJ_SysMail.".</span></td></tr> </table>"; }}?> PHPMailer类不错支持多语言,而且支持Gmail邮件 PHP100的课程里好像有一个实例是讲email的 我给你个php发送邮件http://www.111cn.net/search.php?keyword=php%B7%A2%CB%CD%D3%CA%BC%FE&p=1 真的非常非常谢谢各位, 之前一直用的mail函数发送邮件,感觉真是不好用.我先好好看看各位给的, 有不清楚的再向各位请教,多谢各位了. 兄臺,有何感言, phpmailer?! 也說來聽聽...Tks. 我一般使用 phpmailer 这些有专门的人写好的,直接拿来使用就行了 求助 突然不能访问php文件了 robots.txt能不能阻止非站内链接 求个MYSQL语句按某字段值的和倒序排列 急求问号解决方法??? 这里有对php源代码有研究的兄弟、姐妹吗? 怎样设置mbstring? 请问怎么实现主域和子域共享SESSION? 请问各位php高手,现在国内哪个站点的php的bbs或者说是社区的功能最强大??聊天室呢?? 求教php如何创建一个带键名的空数组,后期再赋值 是PHP的配置问题还是主机问题 DZ提示 DIY模板目录不正确 php/xml, 如何以一个空格 或 多个空格,将字符串划分成数组
http://topic.csdn.net/u/20101105/15/ac661510-426c-41d1-8bdf-f7c56988e6b4.html
希望对你有所帮助!
<?php
//$Mail->set("發件郵箱SMTP服務器地址", "發件郵箱登陸名", "發件郵箱登錄密碼");
//Echo $Mail->send("收件人mail(多个地址逗号隔开)","邮件标题","邮件内容(可包含HTML)","发信人mail");Class Sendmail{
Function __construct(){
$this->set();
$this->auth = 1;
} Function set($server=YJ_SysMail_Smtp,$user="",$password=YJ_SysMail_Pass,$port=YJ_SysMailPort,$type=1,$mailusername=0){
$user=($user=="")?SubStr(YJ_SysMail,0,Stripos(YJ_SysMail,"@")):$user; $this->type = $type;
$this->server = $server;
$this->port = $port;
$this->user = $user;
$this->password = $password;
$this->mailusername = $mailusername;
} Function Send($email_to, $email_subject, $email_message, $email_from = ''){
$email_subject = '=?utf-8?B?'.base64_encode(str_replace("\r", '', $email_subject)).'?=';
$email_message = 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 = $email_from == '' ? '=?utf-8?B?'.base64_encode(YJ_SysName)."?= <".YJ_SysMail.">" : (preg_match('/^(.+?) \<(.+?)\>$/',$email_from, $from) ? '=?utf-8?B?'.base64_encode($from[1])."?= <$from[2]>" : $email_from);
$emails = explode(',', $email_to);
Foreach($emails as $touser){
$tousers[] = preg_match('/^(.+?) \<(.+?)\>$/',$touser, $to) ? ($this->mailusername ? '=?utf-8?B?'.base64_encode($to[1])."?= <$to[2]>" : $to[2]) : $touser;
}
$email_to = implode(',', $tousers);
$headers = "MIME-Version: 1.0\r\nTo: {$email_to}\r\nFrom: {$email_from}<{$email_from}>\r\nX-Priority: 3\r\nX-Mailer: egLive \r\nDate: ".date("r")."\r\nContent-type: text/html; charset=UTF-8\r\n"; IF($this->type == 1){
Return $this->smtp($email_to, $email_subject, $email_message, $email_from, $headers);
}ElseIF($this->type == 2){
Return @mail($email_to, $email_subject, $email_message, $headers);
}Else{
ini_set('SMTP', $this->server);
ini_set('smtp_port', $this->port);
ini_set('sendmail_from', $email_from);
Return @mail($email_to, $email_subject, $email_message, $headers);
}
} Function smtp($email_to, $email_subject, $email_message, $email_from = '', $headers = ''){
IF(!$fp = @fsockopen($this->server, $this->port, $errno, $errstr, 10)){
$this->errorlog('SMTP', "($this->server:$this->port) CONNECT - Unable to connect to the SMTP server", 0);
return false;
}
stream_set_blocking($fp, true);
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != '220'){
$this->errorlog('SMTP', "$this->server:$this->port CONNECT - $lastmessage", 0);
return false;
}
fputs($fp, ($this->auth ? 'EHLO' : 'HELO')." Phpcms\r\n");
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250){
$this->errorlog('SMTP', "($this->server:$this->port) HELO/EHLO - $lastmessage", 0);
return false;
}
While(1){
IF(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)){
break;
}
$lastmessage = fgets($fp, 512);
}
fputs($fp, "AUTH LOGIN\r\n");
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != 334){
$this->errorlog('SMTP', "($this->server:$this->port) AUTH LOGIN - $lastmessage", 0);
return false;
}
fputs($fp, base64_encode($this->user)."\r\n");
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != 334){
$this->errorlog('SMTP', "($this->server:$this->port) USERNAME - $lastmessage", 0);
return false;
}
fputs($fp, base64_encode($this->password)."\r\n");
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != 235){
$this->errorlog('SMTP', "($this->server:$this->port) PASSWORD - $lastmessage", 0);
return false;
}
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){
$this->errorlog('SMTP', "($this->server:$this->port) MAIL FROM - $lastmessage", 0);
return false;
}
}
$email_tos = array();
$emails = explode(',', $email_to);
Foreach($emails as $touser){
$touser = trim($touser);
IF($touser){
fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n");
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != 250){
fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n");
$lastmessage = fgets($fp, 512);
$this->errorlog('SMTP', "($this->server:$this->port) RCPT TO - $lastmessage", 0);
return false;
}
}
}
fputs($fp, "DATA\r\n");
$lastmessage = fgets($fp, 512);
IF(substr($lastmessage, 0, 3) != 354){
$this->errorlog('SMTP', "($this->server:$this->port) DATA - $lastmessage", 0);
}
$headers .= 'Message-ID: <'.gmdate('YmdHs').'.'.substr(md5($email_message.microtime()), 0, 6).rand(100000, 999999).'@'.$_SERVER['HTTP_HOST'].">\r\n";
fputs($fp, "Date: ".gmdate('r')."\r\n");
fputs($fp, "To: ".$email_to."\r\n");
fputs($fp, "Subject: ".$email_subject."\r\n");
fputs($fp, $headers."\r\n");
fputs($fp, "\r\n\r\n");
fputs($fp, "$email_message\r\n.\r\n");
$lastmessage = fgets($fp, 512);
fputs($fp, "QUIT\r\n");
return true;
} Function errorlog($type, $message, $is){
$this->error[] = array($type, $message, $is);
} Function Mailmess($Mess=""){
Return "<style>*{font-family:Verdana;font-size:13px;}</style>
<table cellpadding='5' cellspacing='1' border='0' width='750' style='background-color:#fff;border:1px solid #3b5998;padding:15px;'>
<tr><td style='background:#3b5998;color:#fff;font-weight:bold;font-size:14px;'>".YJ_SysCnname." - ".YJ_SysName."</td></tr>
<tr><td>{$Mess}</td></tr>
<tr><td style='border-top:1px dashed gray;'><span style='color:gray;'>該郵件由軟體<a href='http://www.7di.net' target='_blank'>".YJ_SysName."</a>自動發送,如需技術支持請發信至".YJ_SysMail.".</span></td></tr>
</table>";
}
}
?>
php发送邮件http://www.111cn.net/search.php?keyword=php%B7%A2%CB%CD%D3%CA%BC%FE&p=1
我先好好看看各位给的, 有不清楚的再向各位请教,多谢各位了.
Tks.
这些有专门的人写好的,直接拿来使用就行了