`
ling凌yue月
  • 浏览: 333542 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

用smtp协议php发送email函数(发邮件)

    博客分类:
  • php
阅读更多

   网上找发送email的函数,基本没找到,有发邮件的类,自己试着写了一个smtp的,发送邮件倒是可以了,不过还不知道怎么发附件,先记录一下,再研究,慢慢更新。

   测试了163的smtp,可以发送。

 

 

function sendEmail($host, $port=25, $check=0, $username='', $password='', $fromemail, $toemail, $fromName=''
	, $toName='', $subject='', $message='', $additional='', $charset='utf-8')
{
	$CRLF = "\r\n";
	$fromName = trim($fromName) == '' ? $fromemail : $fromName;
	$toName = trim($toName) == '' ? $toemail : $toName;
	$send_from = "=?$charset?B?".base64_encode($fromName)."?= <$fromemail>";
	$send_to = "=?$charset?B?".base64_encode($toName)."?= <$toemail>";
	$send_subject = "=?$charset?B?".base64_encode(str_replace(array("\r","\n"), array('',' '),$subject)).'?=';
	$send_message = chunk_split(base64_encode(str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", 
		str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $message)))))));
	$additional = "To: {$send_to}{$CRLF}From: {$send_from}{$CRLF}MIME-Version: 1.0{$CRLF}Content-type: text/html; charset=$charset{$CRLF}{$additional}Content-Transfer-Encoding: base64{$CRLF}";
	$fp = fsockopen($host, $port, $errno, $errstr);
	if (!$fp)
	{
		return 'SCE'; //smtp connect error
	}
	if (strncmp(fgets($fp, 512), '220', 3) != 0)
	{
		return 'SCE'; //smtp connect error
	}
	fwrite($fp, "EHLO $fromName{$CRLF}");
	if ($check)
	{
		while ($rt=strtolower(fgets($fp, 512)))
		{
			if (strpos($rt, "-") !== 3 || empty($rt))
			{
				break;
			}
			elseif (strpos($rt, "2") !== 0)
			{
				return "AE";//auth error
			}
		}
		fwrite($fp, "AUTH LOGIN{$CRLF}");
		if (strncmp(fgets($fp, 512), '334', 3) != 0)
		{
			return "ALE";//auth login error
		}
		fwrite($fp, base64_encode($username).$CRLF);
		if (strncmp(fgets($fp,512), '334', 3) != 0)
		{
			return "ALUE";//auth login username error
		}
		fwrite($fp, base64_encode($password).$CRLF);
		if (strncmp(fgets($fp, 512), '235', 3) != 0)
		{
			return 'ALPE';//auth login password error
		}

	}
	$from = preg_replace("/.*\<(.+?)\>.*/", "\\1", $fromemail);
	fwrite($fp, "MAIL FROM: <$from>$CRLF");
	if (strncmp(fgets($fp, 512), '250', 3) != 0)
	{
		return 'EFE'; //email from error
	}
	fwrite($fp, "RCPT TO: <$toemail>$CRLF");
	if (strncmp(fgets($fp,512), '250', 3) != 0)
	{
		return 'ETE';//email toemail error
	}
	fwrite($fp, "DATA$CRLF");
	if (strncmp(fgets($fp, 512), '354', 3) != 0)
	{
		return 'EDE';//email data error
	}
	$msg  = "Date: ".Date("r").$CRLF;
	$msg .= "Subject: $send_subject".$CRLF;
	$msg .= $additional.$CRLF;
	$msg .= $send_message.$CRLF.".".$CRLF;
	fwrite($fp, $msg);
	$lastmessage = fgets($fp, 512);
	if (substr($lastmessage, 0, 3) != 250)
	{
		return 'ESE';//email send error
	}
	fwrite($fp, "QUIT\r\n");
	fclose($fp);
	return 'OK';
}
 

 

 

 

分享到:
评论

相关推荐

    php发送邮件函数包phpmailer

    源代码介绍:PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括: *.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址 *.支持多种邮件编码包括:8bit,base64,binary和quoted-printable *....

    phpmailer邮件类 v5.1.rar

    php本身提供了一个邮件发送函数mail,可以在程序中直接发送电子邮件,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,...

    php发送邮件插件

    这个控件好好用 第一,需要下载PHPMailer文件包phpmailer. http://phpmailer.sourceforge.net/ 第二,确认你的服务器系统已经支持socket ,通过phpinfo();查看是否支持sockets(socket 是属于PHP扩展部分),如果显现为...

    邮件(Email)发送类PHPMailer v2.2.1.rar

    PHPMailer,是一个为了实现PHP平台上发送电子邮件(Email)的优秀国外PHP类库。它最主要的两个特点:发送HTML内容格式的Email和发送带附件的Email。PHPMailer基本上能够实现所有邮箱本身所包含的邮件发送功能,包括...

    phpmailer(优秀的php邮件类) V5.1 开源版.rar

    php本身提供了一个邮件发送函数mail,可以在程序中直接发送电子邮件,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,...

    phpmailer邮件类 v6.0.1

    php本身提供了一个邮件发送函数mail,可以在程序中直接发送电子邮件,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,...

    phpmailer邮件类 v6.0.1.zip

    php本身提供了一个邮件发送函数mail,可以在程序中直接发送电子邮件,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,...

    phpwind2.0邮件增强插件(支持esmtp)

    1 使用默认mail函数 2 通过SOCKET连接SMTP服务器发送(支持 ESMTP 验证) 3 通过调用CDONTS.NewMail(虚拟SMTP发信)组件发送Email(仅 win32 下有效) 4 通过调用jmail 组件发送Email(仅 win32 下有效...

    check_email:使用 SMTP 检查电子邮件地址是否存在的类

    查看电子邮件使用 SMTP 检查电子邮件地址是否存在的类用法很简单,查看test.php 函数 check_email($email) 将模拟使用 SMTP 发送电子邮件,但实际上不会发送电子邮件。 它的用途是验证存在以避免输入错误和垃圾邮件...

    PHPMailer邮件类

    PHPMailer邮件类的使用 第一步:需要下载PHPMailer文件包phpmailer-1.73.tar.gz 来自开源社区: http://phpmailer.sourceforge.net/ 第二步:确认你的服务器系统已经支持socket 如下图,通过phpinfo();查看是否...

    php多种形式发送邮件(mail qmail邮件系统 phpmailer类)

    复制代码 代码如下:/* 使用qmail发送邮件函数 */ function send_check_mail($email, $subject,$uid,$buffer) { $command = “/var/qmail/bin/qmail-inject “.$email; //qmail程式地址,$email是要发送的地址 $...

    php网上留言管理系统的设计(源代码+LW)1.zip

    建立SOCKET会话,根据SMTP协议发送邮件 可在无GD库的空间中正常运行的验证码功能 运用大量PHP和JavaScript函数绘制网页特效 smtp协议_应答码说明: '* 500 格式错误,命令不可识别(此错误也包括命令行过长) '* ...

    基于PHP实现的网上留言管理系统的设计源码.zip

    源码+说明 添加功能: 支持心情图片插入 支持输入内容时插入图片 用户基本信息以及留言内容...建立SOCKET会话,根据SMTP协议发送邮件 可在无GD库的空间中正常运行的验证码功能 运用大量PHP和JavaScript函数绘制网页特效

    thinkphpEmail:thinkphp+PHPMailer发邮件

    2.调用Application/Common/function.php的sendEmail函数/**author:10xjzheng发生邮件,服务器用smtp.163.com,可以在$mail-&gt;Host改配置@param companyEmail string 公司邮箱/发生人邮箱@param password string 邮箱...

    兼容到php5.3以上(php5.6,php7)的Smtp类

    以前的email.class.php不兼容php5.3以上(其实也就有两三个函数换了,改了就好了),现在找到这个别人修改好的,好东西多共享.

    八年PHP文件管理器 v2.6.2 免费版.rar

    文件说明: 8.php 八年文件管理器 主文件 独立上传就可以使用了 class.phpmailer.php class.smtp.php 这两个是 smtp类 上传这两个文件就可以 在不支持 email函数的情况下 发送邮件 把这两个文件上传到和 8.php 同一个...

    email.class.php

    最新的email.class.php代码,其他网站下载的代码有的函数和用法都过时了,下载后还需要大量修改,我的这个代码是我修改过的,可以直接拿来使用

    WP_Mail:使用WordPress发送模板化电子邮件

    该类仅使用WordPress函数wp_mail()发送电子邮件,这意味着您所有现有的SMTP设置将继续运行,而无需其他配置或设置。简介:$ email = WP_Mail :: init () -&gt; to ( 'john.doe@gmail.com' ) -&gt; subject ( 'WP_Mail ...

    Zaqar_EmailSpoofer:功能强大PHP电子邮件欺骗程序,带有优美的用户界面,富文本编辑器和多个发送选项

    Zaqar现在不再使用默认的mail()函数发送电子邮件,而是使用PHPMailer库。 这似乎是整体发送消息的一种更干净的方式,而且它很容易允许附件发送。 将继续尝试使用该库的更多功能。 如何安装和使用 要使用Zaqar,您...

    冰翎留言本程序 v2.1.rar

    12.支持SOCKET会话,根据SMTP协议发送邮件,需要在inc.php文件中设置 13.支持对留言内容和回复内容的问题色彩自定义,需要在inc.php文件中设置 v2.1 修正了插图图片显示时只可以显示一张的BUG 用户名/密码:...

Global site tag (gtag.js) - Google Analytics