`
ling凌yue月
  • 浏览: 339137 次
  • 性别: 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发邮件类smtp发邮件发送文本发送附件和图片全部代码

    `PHPMailer`是一个广泛使用的开源库,它允许我们通过SMTP(Simple Mail Transfer Protocol)协议来发送邮件,并且支持添加附件和嵌入图片。本文将详细介绍如何利用`PHPMailer`类来实现这些功能。 首先,你需要下载`...

    PHP用SMTP发送邮件示例

    在本示例中,我们将探讨如何使用PHP通过SMTP发送邮件。 首先,我们来看`email.class.php`文件。这个文件通常包含一个PHP类,用于封装邮件发送的功能。这个类可能会有一个构造函数,用来设置SMTP服务器的地址、端口...

    PHP通过SMTP实现发送邮件

    6. **连接SMTP服务器并发送邮件**:使用`smtpConnect()`建立与SMTP服务器的连接,然后调用`send()`方法发送邮件。 以下是一个基本的PHPMailer使用示例: ```php &lt;?php require 'vendor/autoload.php'; use ...

    PHP邮件发送实例【SMTP方式】已测试通过

    PHP可以通过内置的`mail()`函数发送邮件,但这种方式往往受限于服务器配置,而通过SMTP发送邮件则更加灵活,可以支持Gmail、Yahoo、Outlook等第三方邮件服务。 本实例的标题"PHP邮件发送实例【SMTP方式】已测试通过...

    腾讯企业邮箱使用php通过smtp发邮件

    本文将详细介绍如何使用PHP通过SMTP协议来利用腾讯企业邮箱发送邮件。 首先,理解SMTP(Simple Mail Transfer Protocol)是互联网上传输电子邮件的标准协议。它允许用户通过服务器发送邮件,而无需直接连接到接收方...

    邮件发送smtp类ereg等函数替换版

    "邮件发送smtp类ereg等函数替换版"这个项目显然是为了应对这一问题,提供了使用新函数或方法来替代旧函数的解决方案,以确保在PHP 5.3及以上版本中能正常发送邮件。 首先,我们来看看`ereg`函数。`ereg`是正则...

    PHP SMTP发送类

    在PHP开发中,SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的标准协议,它允许程序员通过编程方式发送邮件。本文将详细介绍如何使用PHP结合SMTP发送类来实现邮件的发送,并提供一个实际的示例。 ...

    php_smtp.rar_hotmail smtp php_php smtp hotmail_php 邮件_smtp_smtp_

    标题中的"php_smtp.rar_hotmail smtp php_php smtp hotmail_php 邮件_smtp_smtp_"表明这个压缩包包含的是关于PHP通过SMTP协议发送邮件的相关资源,特别是针对Hotmail邮箱的服务。SMTP(Simple Mail Transfer ...

    php通过smtp发邮件的类.zip

    为了在PHP中实现SMTP邮件发送,我们可以使用特定的类库,这里提到的是"php通过smtp发邮件的类.zip",它提供了一个PHP类,使得通过SMTP服务器发送邮件变得更加简单。下面我们将深入探讨这个主题。 首先,让我们了解...

    php发送邮件函数包phpmailer

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

    PHP发送邮件DEMO

    下面将详细介绍PHP发送邮件的基本原理、常用方法以及如何使用这个DEMO。 首先,PHP发送邮件主要依赖于`mail()`函数。这个函数允许你在PHP脚本中直接创建和发送邮件。其基本语法如下: ```php bool mail(string $to...

    PHP使用SMTP邮件服务器发送邮件示例

    本示例将介绍如何使用PHP结合SMTP协议来发送邮件,特别关注`email.class.php`这个邮件发送类的定义和使用。 首先,确保您已经拥有一个支持SMTP服务的邮箱,例如163邮箱或QQ邮箱,并已启用SMTP服务。以QQ邮箱为例,...

    php_smtp类

    在PHP中,发送电子邮件通常有两种方式:使用内置的`mail()`函数或使用SMTP协议。`mail()`函数简单易用,但其功能有限,且可能受到服务器配置的影响。而使用SMTP,我们可以更灵活地控制邮件的发送过程,包括验证、...

    php通用邮件发送示例

    总结,PHP发送邮件可以通过内置的`mail()`函数,或者使用如PHPMailer这样的库通过SMTP协议来实现。对于自建的邮件系统,只需要正确配置SMTP服务器信息,即可使用PHP进行邮件发送。提供的"phpmail"文件是一个实际示例...

    php中email的发送

    PHPMailer允许开发者通过SMTP(简单邮件传输协议)或PHP内置的`mail()`函数来发送邮件,提供丰富的功能,包括HTML邮件、附件、多语言支持以及错误处理。`class.phpmailer.php`是PHPMailer的主要类文件,包含所有邮件...

    php中用phpmailer发送邮件.pdf

    在 PHP 中,使用 mail 函数可以发送邮件,但是它要求服务器支持 sendmail 或者设置一台不需要中继的邮件发送服务器,但这种方法往往无法成功发送email。相比之下,使用 PHPMailer 可以轻松发送邮件,并提供了许多...

    基于PHP的Mailer用于发送电子邮件的函数包(4,5多版本)源码.zip

    1. **SMTP支持**:PHPMailer支持通过SMTP服务器发送邮件,这通常比使用PHP内置的`mail()`函数更可靠,因为`mail()`函数在某些主机上可能被禁用或者不支持自定义头信息。通过SMTP,你可以连接到本地或远程SMTP服务器...

    网站用户注册成功后自动发送邮件

    然而,直接使用`mail()`函数可能在某些服务器上无法工作,因为它们可能需要配置SMTP服务器来发送邮件。 对于更复杂和可靠的邮件发送,推荐使用PHPMailer或SwiftMailer这样的库。这些库支持SMTP协议,可以提供更好的...

    PHP 发送邮件类,含实例(客发送附件)

    // 使用SMTP发送邮件 $mail-&gt;Host = 'smtp.example.com'; // 设置SMTP服务器地址 $mail-&gt;SMTPAuth = true; // 启用SMTP认证 $mail-&gt;Username = 'your-email@example.com'; // SMTP用户名 $mail-&gt;Password = '...

    php邮件发送demo

    PHPMailer是一个强大的库,它允许开发者通过SMTP协议发送邮件,支持SSL/TLS加密,大大增强了发送邮件的功能性和安全性。下面我们将深入探讨如何使用PHPMailer库以及在PHP中实现邮件发送。 首先,`php邮件发送demo`...

Global site tag (gtag.js) - Google Analytics