我想实现的功能是
给甲发一封邮件 同时抄送一份发给乙
这样用email函数能实现么
本地没有邮件服务器 不能调试 求问
给甲发一封邮件 同时抄送一份发给乙
这样用email函数能实现么
本地没有邮件服务器 不能调试 求问
解决方案 »
- php生成rss没问题,但是feeddemon订阅有问题,这是为啥?
- 一个PHP和AJAX相关的问题!急啊
- 一个xml问题
- php如何把数组树型结构 转换 成数组列表结构
- Returnil中国研发中心招聘!!!!!欧美待遇!!!!!!
- 在PHP中,大家对checkbox、select表单值一般怎么处理?用“,”分割吗?值本身含有“,”呢?有没有比较技巧性的通用做法?
- ZEND正在开发WINDOWS下的PHP加速器,会加速十倍,你认为很有必要吗
- 有个域名查询的程序,老出同样的问题,请指教!!在线等!!
- mail函数中如何发送html邮件,在线等待.
- 新手求教。。。
- 一个关于shell_exec的进程查检程序
- /这个符号可以用作字段名中么? 数据库的字段名
<?
class BMail{ /**
* <p>以SMTP的方式发送邮件</p>
*
* @return true,false - 是否成功发送bool
* @param $mailcfg array - 邮件发送的配置
* @param $mail array - 邮件的内容
*/ public static function send($mailcfg,$mail){
//无法连接上smtp服务器
if(!$fp = fsockopen($mailcfg['server'], $mailcfg['port'], $errno, $errstr, 50)) {
//echo ('无法连接');
return false;
}
stream_set_blocking($fp, true);
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != '220') {
$error_msg = "$mailcfg[server]:$mailcfg[port] CONNECT - $lastmessage";
//echo ('连接错误');
return false;
}
//发送用户名
fputs($fp, ($mailcfg['auth'] ? 'EHLO' : 'HELO')." ".$mailcfg['auth_username']."\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
$error_msg = "($mailcfg[server]:$mailcfg[port]) HELO/EHLO - $lastmessage";
//echo ('身份错误');
return false;
}
while(1) {
if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {break;}
$lastmessage = fgets($fp, 512);
}
//登陆验证
if($mailcfg['auth']) {
fputs($fp, "AUTH LOGIN\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 334) {
//登陆模式错误
$error_msg = "($mailcfg[server]:$mailcfg[port]) AUTH LOGIN - $lastmessage";
//echo ('登陆模式错误');
return false;
}
fputs($fp, base64_encode($mailcfg['auth_username'])."\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 334) {
//用户名不正确
$error_msg = "($mailcfg[server]:$mailcfg[port]) USERNAME - $lastmessage";
//echo ('用户名不正确');
return false;
}
fputs($fp, base64_encode($mailcfg['auth_password'])."\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 235) {
//用户密码不正确
$error_msg = "($mailcfg[server]:$mailcfg[port]) PASSWORD - $lastmessage";
//echo ('用户密码不正确');
return false;
}
$email_from = $mailcfg['from'];
}
fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from).">\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) {
//发送地址错误
$error_msg = "($mailcfg[server]:$mailcfg[port]) MAIL FROM - $lastmessage";
//echo ('发送地址错误');
return false;
}
$email_to=$mail['to'];
//循环对逐个收件人发送
foreach(explode(',', $email_to) as $touser) {
$touser = trim($touser);
if($touser) {
fputs($fp, "RCPT TO: <$touser>\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) {
//目标地址错误
$error_msg = "($mailcfg[server]:$mailcfg[port]) RCPT TO - $lastmessage";
//echo ('目标地址错误');
return false;
}
}
}
fputs($fp, "DATA\r\n");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 354) {
$error_msg = "($mailcfg[server]:$mailcfg[port]) DATA - $lastmessage";
//echo ('数据错误');
return false;
}
$from = $mailcfg['from'];
$fromname = $mailcfg['fromname'];
$subject = $mail['subject'];
$content = $mail['content'];
$charset = $mailcfg['charset'];
$headers = "MIME-Version: 1.0\r\nContent-type: $mailcfg[type]; charset=".$charset."\r\n\r\n";//头文件避免出现乱码
//构建邮件数据
$str="To: $email_to\r\nFrom: $fromname <$from>\r\nSubject: ".$subject."\r\n".$headers.$content."\r\n.\r\n";
fputs($fp, "$str\r\n");
fputs($fp, "QUIT\r\n");
return true;
}}/********
//以下为调用例子
define("REG_SMTP_HOST", "smtp.163.com");//如果是ssl类型的smtp,改成'ssl://smtp.163.com' 即可
define("REG_SMTP_USER", "username");
define("REG_SMTP_PASS", "password");
define("REG_SMTP_FROM", "[email protected]");require_once('b-mail.php');$mailcfg = array(
'server'=>REG_SMTP_HOST,
'port'=>'25',//smtp服务器端口
'auth'=>1,
'from'=>REG_SMTP_FROM,
'charset'=>'utf-8',//信件编码
'type'=>'text/html',//发送的类型是html格式
//'type'=>'text/plain',//发送的类型是文本格式
'fromname'=>'囍鹊网(xique.com)',
'auth_username'=>REG_SMTP_USER,
'auth_password'=>REG_SMTP_PASS);
$mail = array(
'to'=>'[email protected]',
'subject'=>'世纪佳缘',
'content'=>'测试用~~');
$rst = BMail::send($mailcfg,$mail);
if(!$rst){
echo 'mail fail';
}else{
echo 'mail succ!';
}
**********/
?>
$email_to=$mail['to'];
//循环对逐个收件人发送,对多人直接用,号分隔开就行了!
我常见有设置
FROM:
reply to:
这两项,分别代表什么
* Adds a "Cc" address. Note: this function works
* with the SMTP mailer on win32, not with the "mail"
* mailer.
* @param string $address
* @param string $name
* @return void
*/
function AddCC($address, $name = "") {
$cur = count($this->cc);
$this->cc[$cur][0] = trim($address);
$this->cc[$cur][1] = $name;
}
fputs($fp, "$str\r\n");
fputs($fp, "QUIT\r\n");
参考这个
To:接收方
from:发送方