手上有一段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发邮件程序,发送方法:./mail.py 收件人 主题 html内容 图片文件 附件文件'
php发邮件 经测试没有问题
简单的邮件程序 php程序编写
php发邮件视频教程
php 封装类 可以直接拿来使用 class.phpmailer.php class.smtp.php.pop3.class
经常做网站的朋友 在做留言本的时候 需要用表单发邮件到客户邮件 有了我们这个小代码就方便了 具体的字段名 可以看样式 自己仿一下就好 可以加可以删 非常方便 借用第3方SMTP服务器 不用PHP服务器组件 具体配置...
PHPMailer是一个发送电子邮件的PHP函数包,它可以在发送邮时指定多个收件人,支持抄送地址,回复地址,支持8bit,base64,binary和quoted-printable等多种邮件编码,支持SMTP验证、冗余SMTP服务器、支持带附件的邮件...
匿名发邮件的php脚本,需要phpmailer类
邮件列表管理程序,邮件程序。php邮件列表管理程序,邮件程序。php
php发送邮件,直接可以使用,里面有具体的例子!
PHPMailer php发邮件 需要在testsend.php中配置邮箱账号和密码
环境要求:php5以上。 php.ini配置打开 extension=php_openssl.dll extension=php_sockets.dll 打开mailtest.php页面即可发送,
php邮件发送程序
PHP smtpmail发邮件
一个用php写的发送邮件程序,只需更改几个参数即可
用PHP发邮件的类库 phpMailer_v2.2.1_.tar.gz
程序已经完全写好。操作步骤 1->下载文件 2->解压(phpmail)到PHP运行环境目录 3->打开目录里面的mail.php文件 4->修改以下几个参数: $mail->Host 服务商的SMTP $mail->Username 发件邮箱 $mail->Password 发件...
php用jmail发邮件,php发邮件,jmail发邮件,jmail邮件源代码
用php写的邮件发送程序,可以直接调用!
php写的163免费发送邮件接口程序,经测试 可以给腾讯、网易、雅虎、搜狐、新浪等邮箱发送邮件