发送邮件与发送邮件类,php中telnet命令发送邮件演示

咱俩平时常用telnet命令来检查实验有个别端口是不是是通的,但它的意义远远不仅如此。它能够用来登入,还能用来发邮件。以下是总体的楷模。

登记的账号是博客园和阿里云的信箱账号分别是:happykala@aliyun.com18963970962@sina.cn

smtp.class.php 那么些是类把她做保留到三个文书中.

 代码如下

[发送邮件与发送邮件类,php中telnet命令发送邮件演示。root@d23334634]# telnet smtp.111cn.net 25
Trying 42.120.219.29…
Connected to smtp.111cn.net.
Escape character is ‘^]’.
220 smtp.aliyun-inc.com MX AliMail Server(10.147.40.200)
helo 123        
–这里能够不管道输送入一些字符,不自然是“123”。指标是给服务器打个招呼
250 Ok
auth login    –然后输入auth login,起始登入
334 dXNlcm5hbWU6
d2ViQGRhaXhpYW9ydWkuY29t    –邮箱名base64后(如:web@111cn.net
base64后改为了d2ViQGRhaXhpYW9ydWkuY29t)
334 UGFzc3dvcmQ6
Qdgwehhh333333    –邮箱密码base64后
235 Authentication successful
mail from:<web@111cn.net>   –发件人邮箱
250 Mail Ok
rcpt to:<446673330@qq.com>   –收件人邮箱,能够是两个
250 Rcpt Ok
data    –开首输入发件消息
354 End data with <CR><LF>.<CR><LF>
from:web@111cn.net
subject:这里是邮件的标题

1.1应用telnet命令连接Ali云邮箱服务器,在cmd命令行中连接
telnet smtp.aliyun.com 25

复制代码 代码如下:

<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=gb2312″
/>
<title>使用php发送电子邮件</title>
<style
type=”text/css教程”>
<!–
.style1 {font-size: 12px}
.style2 {
 font-size: 24px;
 font-weight: bold;
}
–>
</style>
</head>

那边是邮件的正文,注意要与地方空一行。    –注意标题输完后,要多空一行
本文正文,abcdefg www.111cn.net hello hello.

1.2延续之后的展现:

亚洲城yzc88官网 1telnet连接阿里云邮箱服务器

<?php
class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
/* Private Variables */
var $sock;
/* Constractor */
function smtp($relay_host = “”, $smtp_port = 25,$auth =
false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
#
$this->host_name = “localhost”; //is used in HELO command
$this->log_file = “”;
$this->sock = FALSE;
}
/* Main Function */
function sendmail($to, $from, $subject = “”, $body = “”, $mailtype, $cc
= “”, $bcc = “”, $additional_headers = “”)
{
$mail_from = $this->get_address($this->strip_comment($from));
$body = ereg_replace(“(^|(\r\亚洲城yzc88官网,n))(\\.)”, “\\1.\\3”, $body);
$header .= “MIME-Version:1.0\r\n”;
if($mailtype==”HTML”){
$header .= “Content-Type:text/html\r\n”;
}
$header .= “To: “.$to.”\r\n”;
if ($cc != “”) {
$header .= “Cc: “.$cc.”\r\n”;
}
$header .= “From: $from<“.$from.”>;\r\n”;
$header .= “Subject: “.$subject.”\r\n”;
$header .= $additional_headers;
$header .= “Date: “.date(“r”).”\r\n”;
$header .= “X-Mailer:By Redhat (PHP/”.phpversion().”)\r\n”;
list($msec, $sec) = explode(” “, microtime());
$header .= “Message-ID: <“.date(“YmdHis”,
$sec).”.”.($msec*1000000).”.”.$mail_from.”>;\r\n”;
$TO = explode(“,”, $this->strip_comment($to));
if ($cc != “”) {
$TO = array_merge($TO, explode(“,”, $this->strip_comment($cc)));
}
if ($bcc != “”) {
$TO = array_merge($TO, explode(“,”, $this->strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write(“Error: Cannot send email to “.$rcpt_to.”\n”);
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to,
$header, $body)) {
$this->log_write(“E-mail has been sent to
<“.$rcpt_to.”>;\n”);
} else {
$this->log_write(“Error: Cannot send email to
<“.$rcpt_to.”>;\n”);
$sent = FALSE;
}
fclose($this->sock);
$this->log_write(“Disconnected from remote host\n”);
}
return $sent;
}
/* Private Functions */
function smtp_send($helo, $from, $to, $header, $body = “”)
{
if (!$this->smtp_putcmd(“HELO”, $helo)) {
return $this->smtp_error(“sending HELO command”);
}
#auth
if($this->auth){
if (!$this->smtp_putcmd(“AUTH LOGIN”,
base64_encode($this->user))) {
return $this->smtp_error(“sending HELO command”);
}
if (!$this->smtp_putcmd(“”, base64_encode($this->pass))) {
return $this->smtp_error(“sending HELO command”);
}
}
#
if (!$this->smtp_putcmd(“MAIL”, “FROM:<“.$from.”>;”)) {
return $this->smtp_error(“sending MAIL FROM command”);
}
if (!$this->smtp_putcmd(“RCPT”, “TO:<“.$to.”>;”)) {
return $this->smtp_error(“sending RCPT TO command”);
}
if (!$this->smtp_putcmd(“DATA”)) {
return $this->smtp_error(“sending DATA command”);
}
if (!$this->smtp_message($header, $body)) {
return $this->smtp_error(“sending message”);
}
if (!$this->smtp_eom()) {
return $this->smtp_error(“sending
<CR>;<LF>;.<CR>;<LF>; [EOM]”);
}
if (!$this->smtp_putcmd(“QUIT”)) {
return $this->smtp_error(“sending QUIT command”);
}
return TRUE;
}
function smtp_sockopen($address)
{
if ($this->relay_host == “”) {
return $this->smtp_sockopen_mx($address);
} else {
return $this->smtp_sockopen_relay();
}
}
function smtp_sockopen_relay()
{
$this->log_write(“Trying to
“.$this->relay_host.”:”.$this->smtp_port.”\n”);
$this->sock = @fsockopen($this->relay_host, $this->smtp_port,
$errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write(“Error: Cannot connenct to relay host
“.$this->relay_host.”\n”);
$this->log_write(“Error: “.$errstr.” (“.$errno.”)\n”);
return FALSE;
}
$this->log_write(“Connected to relay host
“.$this->relay_host.”\n”);
return TRUE;
}
function smtp_sockopen_mx($address)
{
$domain = ereg_replace(“^.+@([^@]+)$”, “\\1”, $address);
if (!@getmxrr($domain, $MXHOSTS)) {
$this->log_write(“Error: Cannot resolve MX \””.$domain.”\”\n”);
return FALSE;
}
foreach ($MXHOSTS as $host) {
$this->log_write(“Trying to
“.$host.”:”.$this->smtp_port.”\n”);
$this->sock = @fsockopen($host, $this->smtp_port, $errno,
$errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write(“Warning: Cannot connect to mx host
“.$host.”\n”);
$this->log_write(“Error: “.$errstr.” (“.$errno.”)\n”);
continue;
}
$this->log_write(“Connected to mx host “.$host.”\n”);
return TRUE;
}
$this->log_write(“Error: Cannot connect to any mx hosts
(“.implode(“, “, $MXHOSTS).”)\n”);
return FALSE;
}
function smtp_message($header, $body)
{
fputs($this->sock, $header.”\r\n”.$body);
$this->smtp_debug(“>; “.str_replace(“\r\n”, “\n”.”>; “,
$header.”\n>; “.$body.”\n>; “));
return TRUE;
}
function smtp_eom()
{
fputs($this->sock, “\r\n.\r\n”);
$this->smtp_debug(“. [EOM]\n”);
return $this->smtp_ok();
}
function smtp_ok()
{
$response = str_replace(“\r\n”, “”, fgets($this->sock, 512));
$this->smtp_debug($response.”\n”);
if (!ereg(“^[23]”, $response)) {
fputs($this->sock, “QUIT\r\n”);
fgets($this->sock, 512);
$this->log_write(“Error: Remote host returned
\””.$response.”\”\n”);
return FALSE;
}
return TRUE;
}
function smtp_putcmd($cmd, $arg = “”)
{
if ($arg != “”) {
if($cmd==””) $cmd = $arg;
else $cmd = $cmd.” “.$arg;
}
fputs($this->sock, $cmd.”\r\n”);
$this->smtp_debug(“>; “.$cmd.”\n”);
return $this->smtp_ok();
}
function smtp_error($string)
{
$this->log_write(“Error: Error occurred while “.$string.”.\n”);
return FALSE;
}
function log_write($message)
{
$this->smtp_debug($message);
if ($this->log_file == “”) {
return TRUE;
}
$message = date(“M d H:i:s “).get_current_user().”[“.getmypid().”]:
“.$message;
if (!@file_exists($this->log_file) || !($fp =
@fopen($this->log_file, “a”))) {
$this->smtp_debug(“Warning: Cannot open log file
\””.$this->log_file.”\”\n”);
return FALSE;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);
return TRUE;
}
function strip_comment($address)
{
$comment = “\\([^()]*\\)”;
while (ereg($comment, $address)) {
$address = ereg_replace($comment, “”, $address);
}
return $address;
}
function get_address($address)
{
$address = ereg_replace(“([ \t\r\n])+”, “”, $address);
$address = ereg_replace(“^.*<(.+)>;.*$”, “\\1”, $address);
return $address;
}
function smtp_debug($message)
{
if ($this->debug) {
echo $message;
}
}
}
function
sendmail($smtpserver,$smtpuser,$smtppass,$smtpemailto,$smtpusermail,
$mailsubject, $mailbody){
$smtp = new smtp($smtpserver,25,true,$smtpuser,$smtppass);
//$smtp->debug = TRUE;
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody,
“HTML”);
}
//such as
//sendmail(“smtp.126.com”,”test@126.com”,”password”,”1034555083@qq.com”,”test@126.com”,”title”,”body”);
?>

<body>
<p align=”center” class=”style2″>使用php发电子邮件</p>
<form name=”form1″ method=”post” action=”send_mail.php”>
<table width=”444″ height=”347″ border=”0″ align=”center”>
    <tr>
        <td width=”71″ height=”23″ bgcolor=”#d6b1e9″>
        <div align=”right” class=”style1″>
            <div align=”left”> 收件人</div>
        </div>
        </td>
        <td width=”363″>
            <label> <input type=”text”
name=”sendto”></label>
        </td>
    </tr>
    <tr>
        <td height=”27″ bgcolor=”#d6b1e9″>
        <div align=”right” class=”style1″>
            <div align=”left”> 邮件标题</div>
        </div></td>
        <td>
            <label> <input type=”text”
name=”subject”></label>
        </td>
    </tr>
    <tr>
        <td height=”23″ colspan=”2″ bgcolor=”#d6b1e9″>
        <div align=”right” class=”style1″>
            <div align=”left”> 邮件正文</div>
        </div>
        </td>
    </tr>
    <tr>
        <td colspan=”2″ bgcolor=”#d6b1e9″>
        <div align=”right”>www.111cn.net
            <label>
            <div align=”left”>
                <textarea name=”emailcontent” cols=”60″
rows=”18″></textarea>
            </div>
            </label>
        </div>
          <div align=”right”></div>
        <div align=”right”></div>
        </td>
    </tr>
    <tr>
        <td colspan=”2″>
            <label><input type=”submit” name=”submit”
value=”提交”></label>
        </td>
    </tr>
</table>
</form>

.
250 Data Ok: queued as freedom

1.3、测验连接通讯
helo hi

亚洲城yzc88官网 2测量检验通讯返回值

测量试验代码:

</body>
</html>

亚洲城yzc88官网 3

1.4、顾客名密码验证

在验证顾客名和密码的时候利用base64的办法实行加密,这里运用的是php中的函数base64_encode,加密随后的结果如下:

亚洲城yzc88官网 4base64加密邮箱登陆名和密码

个中第一行是登入邮箱名的加密字符串,第二行是密码的加密字符串

验证命令行

auth login

亚洲城yzc88官网 5报到客户名和密码验证

进去书写行

//邮件发送邮箱mail from:<happykala@aliyun.com>//邮件接收邮箱rcpt to:<18963970962@sina.cn>//正文及附属信息输入进入命令DATA//发件人from:xxx//收件人to:xxx//正文内容subject:xxxxx//然后回车输入.再次回车就可以发送邮件了

总体的发送截图如下:

亚洲城yzc88官网 6完整的telnet邮件发送过程

复制代码 代码如下:

 

亚洲城yzc88官网 7

<?
//ok的信箱发送。
include “smtp.class.php”;
//$smtpserver = “SMTP.163.com”; //您的smtp服务器的地点
$smtpserver=”smtp.163.com”;
$port =25; //smtp服务器的端口,常常是 25
$smtpuser = “你的信箱@163.com”; //您登陆smtp服务器的客户名
$smtppwd = “你邮箱的密码”; //您登陆smtp服务器的密码
$mailtype = “TXT”; //邮件的项目,可选值是 TXT 或 HTML ,TXT
表示是纯文本的邮件,HTML 表示是 html格式的邮件
$sender = “你的邮箱@163.com”;
//发件人,平时要与您登陆smtp服务器的客商名($smtpuser)一样,不然恐怕会因为smtp服务器的设置导致发送战败
$smtp = new smtp($smtpserver,$port,true,$smtpuser,$smtppwd,$sender);
$smtp->debug = true;
//是或不是张开调节和测量检验,只在测量试验程序时行使,正式使用时请将此行注释
$to = “你要发放的可怜人的邮箱地址”; //收件人
$subject = “你好”;
$body = “你发送的剧情 “;
$send=$smtp->sendmail($to,$sender,$subject,$body,$mailtype);

 

if($send==1){
echo “邮件发送成功”;
}else{
echo “邮件发送退步<br/>”;
//echo “原因:”.$this->smtp->logs;
}
?>

send_mail.php

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图