php 发送邮件的代码,php使用smtp发送邮件的实现代码

完整代码如下。

/**

* smtp邮件发送函数

* site www.jbxue.com

使用方法 sendmail('发送地址', '邮件主题', '邮件内容')

*/

$bfconfig = Array (

'sitename' => '脚本学堂', //这里填写网站名称

);

$mail = Array (

'state' => 1,

'server' => 'smtp.abc.com',

'port' => 25,

'auth' => 1,

'username' => 'admin@abc.com',

'password' => '123456',

'charset' => 'gbk',

'mailfrom' => 'admin@abc.com'

);

function sendmail($mail_to, $mail_subject, $mail_message) {

global $mail, $bfconfig;

date_default_timezone_set('PRC');

$mail_subject = '=?'.$mail['charset'].'?B?'.base64_encode($mail_subject).'?=';

$mail_message = chunk_split(base64_encode(preg_replace("/(^|(\r\n))(\.)/", "\1.\3", $mail_message)));

$headers .= "";

$headers .= "MIME-Version:1.0\r\n";

$headers .= "Content-type:text/html\r\n";

$headers .= "Content-Transfer-Encoding: base64\r\n";

$headers .= "From: ".$bfconfig['sitename']."\r\n";

$headers .= "Date: ".date("r")."\r\n";

list($msec, $sec) = explode(" ", microtime());

$headers .= "Message-ID: \r\n";

if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) {

exit("CONNECT - Unable to connect to the SMTP server");

}

stream_set_blocking($fp, true);

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != '220') {

exit("CONNECT - ".$lastmessage);

}

fputs($fp, ($mail['auth'] ? 'EHLO' : 'HELO')." befen\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {

exit("HELO/EHLO - ".$lastmessage);

}

while(1) {

if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {

break;

}

$lastmessage = fgets($fp, 512);

}

if($mail['auth']) {

fputs($fp, "AUTH LOGIN\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 334) {

exit($lastmessage);

}

fputs($fp, base64_encode($mail['username'])."\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 334) {

exit("AUTH LOGIN - ".$lastmessage);

}

fputs($fp, base64_encode($mail['password'])."\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 235) {

exit("AUTH LOGIN - ".$lastmessage);

}

$email_from = $mail['mailfrom'];

}

fputs($fp, "MAIL FROM: .*/", "\\1", $email_from).">\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

fputs($fp, "MAIL FROM: .*/", "\\1", $email_from).">\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

exit("MAIL FROM - ".$lastmessage);

}

}

foreach(explode(',', $mail_to) as $touser) {

$touser = trim($touser);

if($touser) {

fputs($fp, "RCPT TO: .*/", "\\1", $touser).">\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

fputs($fp, "RCPT TO: .*/", "\\1", $touser).">\r\n");

$lastmessage = fgets($fp, 512);

exit("RCPT TO - ".$lastmessage);

}

}

}

fputs($fp, "DATA\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 354) {

exit("DATA - ".$lastmessage);

}

fputs($fp, $headers);

fputs($fp, "To: ".$mail_to."\r\n");

fputs($fp, "Subject: $mail_subject\r\n");

fputs($fp, "\r\n\r\n");

fputs($fp, "$mail_message\r\n.\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

exit("END - ".$lastmessage);

}

fputs($fp, "QUIT\r\n");

}

?>

您可能感兴趣的文章:

php 邮件发送类(smtp方式或mail函数方式)

php smtp发送邮件的函数

php中通过curl smtp发送邮件的例子

php使用Pear的NetMail发送smtp邮件

使用pear:Net_SMTP类发送邮件的例子

linux下php配置smtp发送邮件的方法

php写的smtp邮件发送类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值