几种常用的php发送邮件代码 (1/2)
代码如下 | 复制代码 |
<?php <?php |
这是一款免费的php发送邮件代码-用mail哦,是基础php自身的上传函数
代码如下 | 复制代码 |
<html> |
php代码
代码如下 | 复制代码 |
<?php |
1.2 要求
该文档提到了三种服务器:web服务器,imap服务器和LDAP服务器。这些服务器可以位于独立的主机上,或若干个独立的机 器上(例如:23个web服务器,5个LDAP服务器和10个IMAP服务器),或单台服务器上。同时需要具有在 Linux环境下从源代码安装软件的基本知识
1.3 使用的软件
构建该系统需要以下的软件包: Apache 1.3.6 或以上版本 http://www.apache.org/ PHP 3.0.12 需要将对IMAP和LDAP的支持编译进来 OpenLDAP 1.2 Cyrus 1.5.19 (注:不要使用1.6) postfix 19990627 pwcheck_ldap patch (针对cyrus 1.5的) IMP (2.0.4, 2.0.10, 和2.1.3-dev进行了测试) UW IMAP (针对 c-client) 注:cyrus 1.6树使用了一种不同的,被称作SASL的鉴别方法, pwcheck_ldap补丁不是针对这种鉴别方法设计的。然而,对SASL的LDAP的补丁正在设计中,你可以参观该主页来获得最新信息。
1.4 特别注释
该系统有一个部分的可伸缩性不是很好:IMP使用的用来保存会话数据,参 数,及地址簿的SQL服务器。
2. 安装软件 2.1 Web服务器的安装
在web服务器上,管理员需要安装下列软件包:Apache, PHP, postfix, OpenLDAP, UW IMAP, 及IMP. 安装Apache和PHP是很容易的,具体步骤在PHP软件包中的安装导引有详细的说 明。在安装PHP时,你需要将对LDAP和IMAP的支持编译进来。 安装postfix可以参考随软件包的安装指南,特别要注意文件LDAP_README。
2.2 LDAP服务器的安装
需要安装OpenLDAP软件 来构建LDAP服务器。你需要决定一个root dn并相应地向LDAP的db中加入设置。
2.3 IMAP服务器的安装
在IMAP服务器上,你将需要安装LDAP, postfix, Cyrus及cyrus的pwcheck_ldap补丁。编译postfix时需要有加入对ldap的支持。根据软件安装文档安装Cyrus,但 是需要根据pwcheck_ldap补丁的文档对pwcheck_ldap.c进行修改。另外需要修改pwcheck_ldap.c来提供ldap服 务器及根dn信息;同样若在linux服务器上运行IMAP服务器,则需要在在文件pwcheck_ldap.c作如下修正: 增加行: #include <linux/stddef.h> 另外还需要做一些别的语法修改,具体可以在编译 是发现。 使用下面的命令配置cyrus:
./configure --with-login=unix_pwcheck --with-pwcheck=ldap
后面的编译及安装则根据cyrus的文档;
3. 如何配置服务器协同工作 3.1 LDAP服务器 的配置
每个在LDAP数据库教程中的 邮件用户信息除了其他的希望提供的信息以外需要有下面的内容:(假设你的根dn是o=someorg, c=US):
dn: uid=someuser, o=someorg, c=us
uid: someuser
userpassword: somepassword
maildrop: fulladdress@machine.dom.ain
mailacceptinggeneralid: someuser
mailacceptinggeneralid: somealias
同样,需要选择一个用户拥有cyrus管理权限。只有需要在imap服务器上配置cyrus时,才会需要考虑管理问题。另外,最好不要给一个已经 存在的用户添加管理权限,这样做可能导致安全问题或者导致该用户不能查看自己的信件的问题。
3.2 imap服务器的配置
配置在IMAP服务器上的postfix使用ldap来进行别名匹配。在文档LDAP_README对这个问题进行 了说明。对于Cyrus,按照软件包的安装说明文件进行即可。同样,不要忘记 激活pwcheck并在imap.conf中增添管理用户。
3.3 web服务器
在这一步的设置中,web服务器同样是作为接收邮件网关的前端。配 置postfix来使用ldap进行别名匹配。从而实现检查LDAP的maildrop表项并转发该邮件到maildrop地址,所以在maildrop 中需要全邮件名。 例如,你可以将700,000个用户分配到各个服务器上,平均每台服务器10000个用户。邮件目的地 址是user1@dom.ain的邮件将接入到某台WEB服务器,而该邮件将根据maildrop属性被转发到地址,而发网 user657的邮件将被转发给user657@mail34。而且,maildrop属性同时可以被用作转发地址,如给user302的信 件被转发给someuser@somewhereelse.com">
例如,你可以将700,000个用户分配到各个服务器上,平均每台服务 器10000个用户。邮件目的地址是user1@dom.ain的邮件将接入到某台WEB服务器,而该邮件将根据maildrop属性 被转发到地址,而发网user657的邮件将被转发给user657@mail34。而且,maildrop属性同时可以被用作转发地 址,如给user302的信件被转发给someuser@somewhereelse.com。
对IMP的培配置一般将根据软件文档,配置结束以后,需要做如下修 改: 在config/defaults.php教程3增添如下内容:
/* LDAP/IMAP Server Default */ $default->LDAP_server = 'ldap.dom.ain'; $default->LDAP_dn = 'o=someorg,c=US'; $default->LDAP_search_field = 'uid'; $default->ldap_choose_server = true;
to mailbox.php3 apply the following patch:Index: mailbox.php3 =================================================================== RCS file: /home/cvs/imp/mailbox.php3,v retrieving revision 2.29 diff -c -r2.29 mailbox.php3 *** mailbox.php3 1999/07/29 07:20:00 2.29 --- mailbox.php3 1999/08/04 18:04:10 *************** *** 29,34 **** --- 29,51 ---- require './lib/mimetypes.lib'; require './config/defaults.php3'; + /************LDAP**************/ + + if ($default->ldap_choose_server) { + $ldapconnect = ldap_connect($default->LDAP_server); + if ($ldapconnect) { + print("YES! "); + $ldapbind = ldap_bind($ldapconnect); + $ldaps教程earch = ldap_search($ldapconnect, $default->LDAP_dn, $default->LDAP_search_field."=".$imapuser, array("maildrop")); + $ldapget = ldap_get_entries($ldapconnect, $ldapsearch); + $ldapspl = explode("@", $ldapget[0]["maildrop"][0]); + $server = $ldapspl[1]; + $port = $default->port; + } + }
+ /**********end ldap************/ + + /* Html styles configuration */ require './config/html.php3'; /* Mailbox configuration */ 全部配置结束以后,将具有一个高可扩展性的web邮件系统。
注:1999年8月,IMP的新版本已经包含了这些补丁的内容,所以如果使 用新版本的话,就不需添加这些内容。
4. Miscellaneous 4.1 Adding Users
这里是一小段向LDAP服务器中增添用户的代码,并且同时向cyrus增添一个邮件用户。这是针对 IMAP服务器设计的,但是你可以修改其适应别的环境。
<?php
$ldapconn = ldap_connect("ldap.dom.ain");
$machine = "mail01";
if ($ldapconn)
{
$ldhb = ldap_bind($ldapconn, "cn=cyrusadmin, o=someorg,c=US","password");
$dn = "uid=". $username .", o=someorg, c=US";
$info["uid"]=$username;
$info["userpassword"] = $password;
$info["objectclass"] = "account";
$info["maildrop"] = $username ."@" .$machine .".dom.ain";
$info["mailacceptinggeneralid"] = $username;
$ldhb = ldap_add($ldapconn, $dn, $info);
ldap_close($ldapconn);
}
$imapconn = imap_open("{" .$machine .".dom.ain:143}", "cyrusadmin","password");
if ($imapopen)
{
imap_createmailbox($imapconn, "{" .$machine ."dom.ain:143}user.".$username );
imap_close($imapconn);
}
?>
注:由于一个bug的问题,这里使用明文password。
POP3收取邮件的类在前面的文章中已经给大家做了详细的介绍,下面我们来看看如何应用这个类:
代码如下 | 复制代码 |
<? include("pop3.inc.php教程"); $host="pop.china.com"; $user="boss_ch"; $pass="026007"; $rec=new pop3($host,110,2); if (!$rec->open()) die($rec->err_str); echo "open "; if (!$rec->login($user,$pass)) die($rec->err_str); echo "login"; if (!$rec->stat()) die($rec->err_str); echo "共有".$rec->messages."封信件,共".$rec->size."字节大小 "; if ($rec->messages>0) { if (!$rec->listmail()) die($rec->err_str); echo "有以下信件: "; for ($i=1;$i<=count($rec->mail_list);$i++) { echo "信件".$rec->mail_list[$i][num]."大小:".$rec->mail_list[$i][size]."<BR>"; } $rec->getmail(1); echo "邮件头的内容: "; for ($i=0;$i<count($rec->head);$i++) echo htmlspecialchars($rec->head[$i])." "; echo "邮件正文 :<BR>"; for ($i=0;$i<count($rec->body);$i++) echo htmlspecialchars($rec->body[$i])." "; } $rec->close(); ?> |
如果你把pop3类中的debug设为true的话,你还可以看到程序与pop3服务器是如何对话的,用于正在调试的程序来说,这样显得更为直观。
小结
从以上的这个实例我们可以看到PHP真的是网站开发的一个功能非常强大的工具,但是也可以感觉到,PHP做为一种混合形的语言,其面对对象的开发与其它的工具如java相比还存在不少让人遗憾的地方。这个pop类的实现也还有不少需要改进之处,欢迎各位同仁们指导。
html代码
<form action="lead_mail_send.php" method="Post" enctype="multipart/form-data" name="myfm">
<table width="80%" border="0" align="center" cellspacing="6">
<tr>
<td width="10%">邮箱:</td>
<td width="90%"><label>
<input name="mail" type="text" id="mail" size="18" />
</label></td>
</tr>
<tr>
<td>电话:</td>
<td><input name="tel" type="text" id="tel" size="18" /></td>
</tr>
<tr>
<td>内容:</td>
<td><label>
<textarea name="bodys" id="bodys" cols="45" rows="5"></textarea>
</label></td>
</tr>
<tr>
<td> </td>
<td><label>
<input name="button2" type="submit" class="but01" id="button2" value="发布提交" onclick="return check();" />
<input name="button3" type="reset" class="but02" id="button3" value="清楚建议" />
</label></td>
</tr>
</table>
</form>
去down.111cn.net教程下载一个phpmailer源码教程
require("mail/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.163.com"; // smtp1.example.com;smtp2.example.comspecify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "mailangel123"; // SMTP username
$mail->Password = "*******"; // SMTP password
$mail->From = "mailangel123@163.com";
$mail->FromName = "人才自荐";
$Subject =PostGet('tel',1);
$jmail =PostGet('mail',1);
$body =PostGet('bodys',1);
$array ='zjj@oeoa.cn';
$mail->AddReplyTo("mailangel123@163.com", "此邮箱无需回复!");
$mail->AddAddress($array,'您好!');
$mail->WordWrap = 50;
$mail->CharSet="GB2312"; // set word wrap to 50 characters
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = $Subject;
$mail->Body = $body.'<br>'.$jmail;
//$mail->AltBody = "This is the body in plain text for non-HTML mail clients";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
$mail->ClearAddresses();
$mail->ClearAttachments();
}
else
{
echo "您好,你的信息己经发送到我们负责人信箱,请等候佳声。<a href="javascript教程:window.close();">点击
关闭</a>";
}
/* echo "<script>alert('发关".$count."邮件成功');</script>"; */
?>
// 本站原创转载注明来源www.111cn.net
相关文章
- 这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
- 本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20
- mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
- 这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
- 这篇文章主要介绍了c# 如何实现发送邮件的功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
- 这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
- 这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-25
- 这篇文章主要介绍了c#使用netmail方式发送邮件的示例,大家参考使用吧...2020-06-25
- mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
- PHPMailer在SAE上无法发送邮件怎么回事呢,我们以前在php5.2.7版本中使用了PHPMailer是可以发,但移到sae中发现无法发邮件了,那么此问题如何解决 在SAE上直接用5.2.7...2016-11-25
- 本文我们整理了三个android后台发送邮件的方法及示例,第一个是不借助Intent在android后台发送Email,第二个是用在收集应用的异常信息,第三个是分享一个android后台发送邮...2016-09-20
- 这篇文章主要介绍了Perl中使用MIME::Lite发送邮件实例,本文介绍了使用sendmail方式发送、发送HTML格式邮件、smtp方式发送邮件等内容,需要的朋友可以参考下...2020-06-29
网上找到的两个PHP发送邮件的例子,很不错,贴出来给初学者参考吧(不知道是否有兄弟曾贴过),呵呵(2
Advanced Example Here we will show the full capabilities of the PHP mail function. PHP Code: <?php echo "<html><body>"; $recipient = "Kris Arndt <karn@nu...2016-11-25node.js 基于 STMP 协议和 EWS 协议发送邮件
这篇文章主要介绍了node.js 基于 STMP 协议和 EWS 协议发送邮件的示例,帮助大家更好的理解和使用node.js,感兴趣的朋友可以了解下...2021-02-15- 学过asp的朋友可能知道jmail组件是使用在asp中一个常用的邮箱发送功能,在php中如果想调用jmail功能我们需要使用com组件来操作。 我们先来介绍格式 代码如...2016-11-25
- //原创:www.111cn.net 注明:转载说明来处www.111cn.net // 昨天听一网友说用php 里面的mail发邮件发不出去,我想一般都是发不了的,现在大多数据邮件提供商都不准那样了...2016-11-25
- 这篇文章主要介绍了C#编程实现发送邮件的方法,具备添加附件的功能,涉及C#文件传输及邮件发送的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本文章来介绍人一下关于与我们不同的发送邮件的方法我们来利用php curl stmp来实现邮件的发送程序。 $ telnet 邮箱SMTP服务地址 25 Trying 邮箱服务IP地址......2016-11-25
- 这篇文章主要介绍了Python基于httpx模块实现发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-08
- 这篇文章介绍了php中常用的数组与函数,非常具有价值,有兴趣的同学可以参考一下 本文实例总结了php常用数组函数。分享给大家供大家参考,具体如下: 1. array array_mer...2016-12-31