网上找发送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';
}
分享到:
相关推荐
`PHPMailer`是一个广泛使用的开源库,它允许我们通过SMTP(Simple Mail Transfer Protocol)协议来发送邮件,并且支持添加附件和嵌入图片。本文将详细介绍如何利用`PHPMailer`类来实现这些功能。 首先,你需要下载`...
在本示例中,我们将探讨如何使用PHP通过SMTP发送邮件。 首先,我们来看`email.class.php`文件。这个文件通常包含一个PHP类,用于封装邮件发送的功能。这个类可能会有一个构造函数,用来设置SMTP服务器的地址、端口...
6. **连接SMTP服务器并发送邮件**:使用`smtpConnect()`建立与SMTP服务器的连接,然后调用`send()`方法发送邮件。 以下是一个基本的PHPMailer使用示例: ```php <?php require 'vendor/autoload.php'; use ...
PHP可以通过内置的`mail()`函数发送邮件,但这种方式往往受限于服务器配置,而通过SMTP发送邮件则更加灵活,可以支持Gmail、Yahoo、Outlook等第三方邮件服务。 本实例的标题"PHP邮件发送实例【SMTP方式】已测试通过...
本文将详细介绍如何使用PHP通过SMTP协议来利用腾讯企业邮箱发送邮件。 首先,理解SMTP(Simple Mail Transfer Protocol)是互联网上传输电子邮件的标准协议。它允许用户通过服务器发送邮件,而无需直接连接到接收方...
"邮件发送smtp类ereg等函数替换版"这个项目显然是为了应对这一问题,提供了使用新函数或方法来替代旧函数的解决方案,以确保在PHP 5.3及以上版本中能正常发送邮件。 首先,我们来看看`ereg`函数。`ereg`是正则...
在PHP开发中,SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的标准协议,它允许程序员通过编程方式发送邮件。本文将详细介绍如何使用PHP结合SMTP发送类来实现邮件的发送,并提供一个实际的示例。 ...
标题中的"php_smtp.rar_hotmail smtp php_php smtp hotmail_php 邮件_smtp_smtp_"表明这个压缩包包含的是关于PHP通过SMTP协议发送邮件的相关资源,特别是针对Hotmail邮箱的服务。SMTP(Simple Mail Transfer ...
为了在PHP中实现SMTP邮件发送,我们可以使用特定的类库,这里提到的是"php通过smtp发邮件的类.zip",它提供了一个PHP类,使得通过SMTP服务器发送邮件变得更加简单。下面我们将深入探讨这个主题。 首先,让我们了解...
源代码介绍:PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括: *.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址 *.支持多种邮件编码包括:8bit,base64,binary和quoted-printable *....
下面将详细介绍PHP发送邮件的基本原理、常用方法以及如何使用这个DEMO。 首先,PHP发送邮件主要依赖于`mail()`函数。这个函数允许你在PHP脚本中直接创建和发送邮件。其基本语法如下: ```php bool mail(string $to...
本示例将介绍如何使用PHP结合SMTP协议来发送邮件,特别关注`email.class.php`这个邮件发送类的定义和使用。 首先,确保您已经拥有一个支持SMTP服务的邮箱,例如163邮箱或QQ邮箱,并已启用SMTP服务。以QQ邮箱为例,...
在PHP中,发送电子邮件通常有两种方式:使用内置的`mail()`函数或使用SMTP协议。`mail()`函数简单易用,但其功能有限,且可能受到服务器配置的影响。而使用SMTP,我们可以更灵活地控制邮件的发送过程,包括验证、...
总结,PHP发送邮件可以通过内置的`mail()`函数,或者使用如PHPMailer这样的库通过SMTP协议来实现。对于自建的邮件系统,只需要正确配置SMTP服务器信息,即可使用PHP进行邮件发送。提供的"phpmail"文件是一个实际示例...
PHPMailer允许开发者通过SMTP(简单邮件传输协议)或PHP内置的`mail()`函数来发送邮件,提供丰富的功能,包括HTML邮件、附件、多语言支持以及错误处理。`class.phpmailer.php`是PHPMailer的主要类文件,包含所有邮件...
在 PHP 中,使用 mail 函数可以发送邮件,但是它要求服务器支持 sendmail 或者设置一台不需要中继的邮件发送服务器,但这种方法往往无法成功发送email。相比之下,使用 PHPMailer 可以轻松发送邮件,并提供了许多...
1. **SMTP支持**:PHPMailer支持通过SMTP服务器发送邮件,这通常比使用PHP内置的`mail()`函数更可靠,因为`mail()`函数在某些主机上可能被禁用或者不支持自定义头信息。通过SMTP,你可以连接到本地或远程SMTP服务器...
然而,直接使用`mail()`函数可能在某些服务器上无法工作,因为它们可能需要配置SMTP服务器来发送邮件。 对于更复杂和可靠的邮件发送,推荐使用PHPMailer或SwiftMailer这样的库。这些库支持SMTP协议,可以提供更好的...
// 使用SMTP发送邮件 $mail->Host = 'smtp.example.com'; // 设置SMTP服务器地址 $mail->SMTPAuth = true; // 启用SMTP认证 $mail->Username = 'your-email@example.com'; // SMTP用户名 $mail->Password = '...
PHPMailer是一个强大的库,它允许开发者通过SMTP协议发送邮件,支持SSL/TLS加密,大大增强了发送邮件的功能性和安全性。下面我们将深入探讨如何使用PHPMailer库以及在PHP中实现邮件发送。 首先,`php邮件发送demo`...