- 论坛徽章:
- 0
|
参考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);
?> |
|
评分
-
查看全部评分
|