`
dongbao100
  • 浏览: 35732 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

php发邮件程序怪现象,求解释

    博客分类:
  • php
阅读更多
手上有一段php发邮件的程序,由两个文件组成:sendmail.php和sendmail.inc.php
sendmail.php文件中的代码如下:
<?php

$maildefault = 'dongbao100@sina.com';
$mailsend = 2;////此变量写死,保证sendmail.inc.php文件中进入if($mailsend == 2)分支
$mailserver = 'smtp.sina.com';
$mailport = 25;
$mailauth = 1;
$mailfrom = 'dongbao100@sina.com';
$mailauth_username = 'dongbao100@sina.com';//////我用的发送邮件测试邮箱
$mailauth_password = '*******';//////我的发送邮件测试邮箱密码
$maildelimiter = '0';
$mailusername = '1';
$sendmail_silent = '1';

$email_to = '286392357@qq.com';//////我的接收邮件测试邮箱

//$email_message = "邮件发送";

$email_subject = '邮件题目 ';
////$email_message = '邮件内容';
$email_message = '邮件内容'.'.undis{display:none}';////如果邮件内容中包括字符串:.undis{display:none},发送邮件就不成功(提示成功但时间收不到邮件),如果不包含该字符串,则发送成功并能收到收到邮件。

include 'sendmail.inc.php';////包含发邮件程序
?>


文件sendmail.inc.php的内容如下:
<?php
//发送邮件
//屏蔽错误提示
$charset = 'UTF-8';
if($sendmail_silent) {
	error_reporting(0);
}
//分隔符
$maildelimiter = !empty($maildelimiter) ? "\r\n" : "\n";
//收件人地址中是否包含用户名
$mailusername = isset($mailusername) ? $mailusername : 1;

$email_subject = '=?'.$charset.'?B?'.base64_encode(str_replace("\r", '', str_replace("\n", '', $email_subject))).'?=';
$mailsite = strstr($email_to,'@');
$email_message = 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", $email_message)))));
if (!in_array($mailsite,array('@gmail.com',))) {
	$email_message = chunk_split(base64_encode($email_message));////base64编码
}

foreach(explode(',', $email_to) as $touser) {
	$tousers[] = $touser;
}
$email_to = implode(',', $tousers);

$headers = "From: $mailfrom{$maildelimiter}MIME-Version: 1.0{$maildelimiter}Content-type: text/plain; charset=$charset{$maildelimiter}Content-Transfer-Encoding: base64{$maildelimiter}";
//exit($mailsend);

if($mailsend == 1 && function_exists('mail')) {

	@mail($email_to, $email_subject, $email_message, $headers);

} elseif($mailsend == 2) {////程序写死固定进入此if

	if(!$fp = fsockopen($mailserver, $mailport, $errno, $errstr, 30)) {
		die ("SMTP($mailserver:$mailport CONNECT - Unable to connect to the SMTP server");
	}
 	stream_set_blocking($fp, true);

	$lastmessage = fgets($fp, 512);
	if(substr($lastmessage, 0, 3) != '220') {
		die ("SMTP($mailserver:$mailport CONNECT - $lastmessage");
	}

	fputs($fp, ($mailcfg['auth'] ? 'EHLO' : 'HELO')." SupeSite\r\n");
	$lastmessage = fgets($fp, 512);
	if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
		die ("SMTP($mailserver:$mailport HELO/EHLO - $lastmessage");
	}

	while(1) {
		if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {
 			break;
 		}
 		$lastmessage = fgets($fp, 512);
	}

	if($mailauth) {
		fputs($fp, "AUTH LOGIN\r\n");
		$lastmessage = fgets($fp, 512);
		if(substr($lastmessage, 0, 3) != 334) {
			die ("SMTP($mailserver:$mailport AUTH LOGIN - $lastmessage");
		}

		fputs($fp, base64_encode($mailauth_username)."\r\n");
		$lastmessage = fgets($fp, 512);
		if(substr($lastmessage, 0, 3) != 334) {
			die ("SMTP($mailserver:$mailport USERNAME - $lastmessage");
		}

		fputs($fp, base64_encode($mailauth_password)."\r\n");
		$lastmessage = fgets($fp, 512);
		if(substr($lastmessage, 0, 3) != 235) {
			die ("SMTP($mailserver:$mailport PASSWORD - $lastmessage");
		}

		$mailfrom = $mailfrom;
	}

	fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $mailfrom).">\r\n");
	$lastmessage = fgets($fp, 512);
	if(substr($lastmessage, 0, 3) != 250) {
		fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $mailfrom).">\r\n");
		$lastmessage = fgets($fp, 512);
		if(substr($lastmessage, 0, 3) != 250) {
			die ("SMTP($mailserver:$mailport  MAIL FROM - $lastmessage");
		}
	}

	foreach(explode(',', $email_to) as $touser) {
		$touser = trim($touser);
		if($touser) {
			fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n");
			$lastmessage = fgets($fp, 512);
			if(substr($lastmessage, 0, 3) != 250) {
				fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n");
				$lastmessage = fgets($fp, 512);
				die ("SMTP($mailserver:$mailport  RCPT TO - $lastmessage");
			}
		}
	}

	fputs($fp, "DATA\r\n");
	$lastmessage = fgets($fp, 512);
	if(substr($lastmessage, 0, 3) != 354) {
		die ("SMTP($mailserver:$mailport DATA - $lastmessage");
	}

	$headers .= 'Message-ID: <'.gmdate('YmdHs').'.'.substr(md5($email_message.microtime()), 0, 6).rand(100000, 999999).'@'.$_SERVER['HTTP_HOST'].">{$maildelimiter}X-Priority: 3{$maildelimiter}X-Mailer: Discuz! Mailer{$maildelimiter}";

	fputs($fp, "Date: ".gmdate('r')."\r\n");
	fputs($fp, "To: ".$email_to."\r\n");
	fputs($fp, "Subject: ".$email_subject."\r\n");
	fputs($fp, $headers."\r\n");
	fputs($fp, "\r\n\r\n");
	fputs($fp, "$email_message\r\n.\r\n");
	$lastmessage = fgets($fp, 512);
	if(substr($lastmessage, 0, 3) != 250) {
		$errorlog('SMTP', "($mail[server]mail[port]) DATA - $lastmessage", 0);
	}
	fputs($fp, "QUIT\r\n");
	//exit("aac");
} elseif($mailsend == 3) {

	 ini_set('SMTP', $mailserver);
	 ini_set('smtp_port', $mailport);
	 ini_set('sendmail_from', $mailauth_username);
	 @mail($email_to, $email_subject, $email_message, $headers);
}
?>


谁能帮帮忙解释解释,为什么邮件内容中包含字符串“.undis{display:none}”邮件就收不到呢,没有这个字符串就正常能收到邮件?我这也是在测试邮件的时候发现的怪现象,是程序中有什么bug么?求解释……
分享到:
评论

相关推荐

    python发邮件程序

    python发邮件程序,发送方法:./mail.py 收件人 主题 html内容 图片文件 附件文件'

    php发邮件 phpMailer

    在IT行业中,PHP是一种广泛使用的服务器端脚本语言,尤其在构建动态网站和处理Web应用程序时。PHPMailer是一个流行的PHP库,它允许开发者通过PHP发送电子邮件。本篇文章将深入探讨如何使用PHPMailer来发送邮件以及...

    php邮件程序源码

    当我们谈论"php邮件程序源码"时,我们通常是指使用PHP编写的一种能够发送电子邮件的程序。这种程序允许用户通过网站界面发送邮件,是许多网站交互功能的核心部分,例如注册确认、密码重置请求或者订阅新闻通讯。 ...

    php发邮件的实例代码

    在PHP中发送电子邮件是一项常见的任务,特别是在Web应用程序中,用于通知、验证或客户服务。这个实例是基于PHP的Mail函数和PHPMailer库,适用于PHP5以上的版本。PHPMailer是一个功能丰富的邮件发送类,支持SMTP验证...

    php发邮件类smtp发邮件发送文本发送附件和图片全部代码

    在PHP开发中,有时我们需要通过程序来发送电子邮件,例如通知用户、发送验证码或者分享文件等。`PHPMailer`是一个广泛使用的开源库,它允许我们通过SMTP(Simple Mail Transfer Protocol)协议来发送邮件,并且支持...

    php发邮件教程

    php发邮件视频教程

    php发送邮件源代码

    首先,你需要创建一个`PHPMailer`对象,然后设置一些基本的属性,如发件人、收件人、邮件主题和内容。以下是一个基础的使用示例: ```php &lt;?php require 'PHPMailer/PHPMailerAutoload.php'; $mail = new ...

    简单php发送邮件程序

    【PHP发送邮件程序详解】 PHP是一种广泛使用的服务器端脚本语言,特别适合于Web开发,也可以用来编写命令行脚本。在PHP中,发送电子邮件是一项常见的任务,这通常通过内置的`mail()`函数来实现。本文将深入探讨如何...

    php 发送邮件源码

    在PHP中发送邮件是一项常见的任务,特别是在开发Web应用程序时,我们可能需要向用户发送确认邮件、密码重置链接或订阅通知等。以下是对标题“php 发送邮件源码”及描述“含有测试主页html,和封装好的sendmail类”的...

    php发邮件 邮件接口

    在PHP中发送邮件是一项常见的任务,特别是在开发Web应用程序时,我们经常需要向用户发送确认邮件、通知或密码重置链接。本教程将详细介绍如何利用PHP的邮件接口来实现这一功能。 首先,PHP发送邮件主要依赖于`mail...

    php写的163免费发送邮件接口程序

    【PHP编写163免费邮件发送接口程序】 在IT领域,PHP是一种广泛使用的服务器端脚本语言,尤其在Web开发中占据重要地位。本程序利用PHP编写,实现了通过163邮箱免费发送邮件的功能,并且经过测试,可以成功地向腾讯、...

    php用jmail发邮件源代码

    这段代码展示了如何设置JMail的各种参数,如SMTP服务器信息、认证信息、发件人、收件人、邮件主题以及正文。`$mail-&gt;Send()`方法用于实际发送邮件,如果发送失败,可以通过`$mail-&gt;ErrorInfo`获取错误信息。 值得...

    php邮件发送程序

    PHP邮件发送程序是一种基于PHP语言实现的用于发送电子邮件的脚本。PHP,全称为“PHP:Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,特别适合于Web开发,能够嵌入到HTML中进行动态网页内容的生成。邮件...

    功能强大的PHP发邮件类.zip

    本资源“功能强大的PHP发邮件类.zip”提供了一个专门用于发送电子邮件的PHP类库,这对于开发者来说是一个非常实用的工具。下面将详细介绍这个类库的核心功能、使用方法以及相关知识点。 首先,PHP的邮件发送功能...

    用PHP发邮件的类库

    标题 "用PHP发邮件的类库" 指的是使用PHP进行电子邮件发送的软件工具,通常是一个类库或包,可以方便地集成到PHP应用程序中。在这个特定的案例中,我们提到的类库是 `phpMailer` 的一个版本,具体为 `...

    PHP表单发邮件

    经常做网站的朋友 在做留言本的时候 需要用表单发邮件到客户邮件 有了我们这个小代码就方便了 具体的字段名 可以看样式 自己仿一下就好 可以加可以删 非常方便 借用第3方SMTP服务器 不用PHP服务器组件 具体配置...

    邮件发送程序

    【邮件发送程序】是使用PHP编程语言编写的用于发送电子邮件的应用程序。PHP是一种广泛使用的开源脚本语言,尤其在Web开发领域中应用广泛。通过PHP,开发者可以创建动态交互式的网页,其中包括邮件发送功能。 SMTP...

    匿名发邮件的php脚本

    匿名发邮件的php脚本,需要phpmailer类

    邮件列表管理程序

    4. **签名功能**:邮件签名是附在每封邮件底部的一段文本,通常包含发件人的联系信息。在Postlister中,每个邮件列表可以配置独特的签名,使得邮件更加专业和个性化。 5. **密码保护**:为了保障邮件列表的安全,...

    php发送电子邮件工具类

    `PHPMailer`是一个广泛使用的开源库,用于在PHP应用程序中方便地发送邮件。这个库包括两个主要的文件:`class.phpmailer.php`和`class.smtp.php`。 `class.phpmailer.php`是PHPMailer的核心类文件,它包含了处理...

Global site tag (gtag.js) - Google Analytics