php发邮件api,PHP邮件代发代码API

时间:2014-02-24  发布人:SHX  浏览次数:5492  评论:3

在很多时候,我们需要网站做一些发邮件的工作。比如:邮箱验证、密码找回等。下面就给大家介绍一个利用smtp发送邮件的方式:<?php

/**

003

* smtp邮件发送函数

004

* site www.jbxue.com

005

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

006

*/

$bfconfig = Array (

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

);

$mail = Array (

'state' => 1,

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

'port' => 25,

'auth' => 1,

'username' => '',//用户名

'password' => '',//密码

'charset' => 'gbk',

'mailfrom' => ''//发件人

);

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 = (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) = '(" ", 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");

}

sendmail('1637838569@qq.com', '邮件主题', '邮件内容')

?>

这里的smtp'server' => 'smtp.qq.com'

可以是个大邮箱提供商的,比如QQ邮箱、163邮箱等等;

QQ邮箱:smtp.qq.com

163邮箱: smtp.163.com

QQ个人免费企业邮箱:smtp.exmail.qq.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值