免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3990 | 回复: 2
打印 上一主题 下一主题

PHP 通过 Socket 连接 SMTP 服务器发送电子邮件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-31 14:35 |只看该作者 |倒序浏览
参考Discuz代码简单试了下使用 PHP Socket函数连接SMTP服务器发送邮件,测试成功,代码不是很完善,分享下,原文发表于我的博客
<?php   
$smtp_host = 'smtp.163.com';   
$smtp_port = 25;   
$username = 'lvyaozu';   
$password = '**********';   
$mail_from = 'lvyaozu@163.com';   
$mail_to = 'lvyaozu@sina.com';   
$mail_subject = '这是测试邮件标题';   
$mail_content = '<font color="red">这是测试邮件内容</font>';   
   
if(!$fp = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30)) {   
    exit("$errno: $errstr");   
}   
stream_set_blocking($fp, 1);   
$content = fgets($fp, 512);   
if (substr($content, 0, 3) != 220) {   
    exit("CONNECT: $content");      
}   
   
fwrite($fp, "EHLO mail");   
$content = fgets($fp, 512);   
if (substr($content, 0, 3) != 220 && substr($content, 0, 3) != 250) {   
    exit("EHLO/HELO: $content");        
}   
while (1) {   
    if(substr($content, 3, 1) != '-' || empty($content)) {   
        break;   
    }   
    $content = fgets($fp, 512);   
}   
   
fwrite($fp, "AUTH LOGIN");   
$content = fgets($fp, 512);   
if(substr($content, 0, 3) != 334) {   
    exit("AUTH LOGIN: $content");   
}   
   
fwrite($fp, base64_encode($username)."");   
$content = fgets($fp, 512);   
if(substr($content, 0, 3) != 334) {   
    exit("USERNAME: $content");   
}   
   
fwrite($fp, base64_encode($password)."");   
$content = fgets($fp, 512);   
if(substr($content, 0, 3) != 235) {   
    exit("PASSWORD: $content");   
}   
   
fwrite($fp, "MAIL FROM: <$mail_from>");   
$content = fgets($fp, 512);   
if(substr($content, 0, 3) != 250) {   
    exit("MAIL FROM: $content");   
}   
   
fwrite($fp, "RCPT TO: <$mail_to>");   
$content = fgets($fp, 512);   
if(substr($content, 0, 3) != 250) {   
    exit("RCPT TO: $content");   
}   
   
fwrite($fp, "DATA");   
$content = fgets($fp, 512);   
if (substr($content, 0, 3) != 354) {   
    exit("DATA: $content");     
}   
   
fwrite($fp, "Date:".gmdate('r')."");   
fwrite($fp, "To:".$mail_to."");   
fwrite($fp, "Content-Type: text/html");   
fwrite($fp, "Subject:".$mail_subject."");   
   
fwrite($fp, "");   
fwrite($fp, $mail_content.".");   
   
fwrite($fp, "QUIT");   
fclose($fp);   
?>  

评分

参与人数 1可用积分 +5 收起 理由
bs + 5 原创内容

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-07-31 14:58 |只看该作者
应该有成熟的库可以用吧,自己写要处理异常错误什么的,比较麻烦。

论坛徽章:
0
3 [报告]
发表于 2009-08-01 00:25 |只看该作者
原帖由 dz902 于 2009-7-31 14:58 发表
应该有成熟的库可以用吧,自己写要处理异常错误什么的,比较麻烦。

呵呵,嗯,就是没事折腾
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP