php关闭mail函数,用于关闭打开的文件的PHP函数是

本文目录一览:

php mail函数到底怎么配置

楼主用phpmailer吧,我用过,比较简单。下面是摘的一段phpmailer配置,试试看,有什么问题再提问。

第一,需要下载PHPMailer文件包phpmailer.

第二,确认你的服务器系统已经支持socket

,通过phpinfo();查看是否支持sockets(socket 是属于PHP扩展部分),如果显现为“enabled”,那就是支持了。

第三,把文件解压到你的web服务器目录下,调用类就可以了.

首先包含class.phpmailer.php,然后创建对象,设置参数,调用成员函数。具体请见下面的示例代码:

实例1,做成函数方便调用

?php

require(“phpmailer/class.phpmailer.php”);

function smtp_mail( $sendto_email, $subject, $body, $extra_hdrs, $user_name){

$mail = new PHPMailer();

$mail-IsSMTP(); // send via SMTP

$mail-Host = “200.162.244.66”; // SMTP servers

$mail-SMTPAuth = true; // turn on SMTP authentication

$mail-Username = “yourmail”; // SMTP username 注意:普通邮件认证不需要加 @域名

$mail-Password = “mailPassword”; // SMTP password

$mail-From = “yourmail@yourdomain.com”; // 发件人邮箱

$mail-FromName = “管理员”; // 发件人

$mail-CharSet = “GB2312”; // 这里指定字符集!

$mail-Encoding = “base64”;

$mail-AddAddress($sendto_email,”username”); // 收件人邮箱和姓名

$mail-AddReplyTo(“yourmail@yourdomain.com”,”yourdomain.com”);

//$mail-WordWrap = 50; // set word wrap 换行字数

//$mail-AddAttachment(“/var/tmp/file.tar.gz”); // attachment 附件

//$mail-AddAttachment(“/tmp/image.jpg”, “new.jpg”);

$mail-IsHTML(true); // send as HTML

// 邮件主题

$mail-Subject = $subject;

// 邮件内容

$mail-Body = ”

htmlhead

meta http-equiv=”Content-Language” content=”zh-cn”

meta http-equiv=”Content-Type” content=”text/html; charset=GB2312″

/head

body

I love php。

/body

/html

“;

$mail-AltBody =”text/html”;

if(!$mail-Send())

{

echo “邮件发送有误 p”;

echo “邮件错误信息: ” . $mail-ErrorInfo;

exit;

}

else {

echo “$user_name 邮件发送成功!br /”;

}

}

// 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名)

smtp_mail(“yourmail@yourdomain.com”, “欢迎使用phpmailer!”, “NULL”, “yourdomain.com”, “username”);

?

要注意的内容:

1. 邮件的字符集设置,

$mail-CharSet = “GB2312”; //

这里指定字符集!在这里我只指定为GB2312因为这样Outlook能正常显示邮件主题,我尝试过设为utf-8但在Outlook下显示乱码。

2. 如果是发送html格式的邮件,那么记得也指定meta … charset=GB2312″

3. 如果你想用它来群发邮件的话,记得修改包含文件函数,如:

require(“phpmailer/class.phpmailer.php”);

改为

require_once(“phpmailer/class.phpmailer.php”);

否则的话会产生类的重定义。

如何通过php发送邮件?php的mail函数不能用!

支持mail的服务器 一般都是linux的 国内的好像不多

自己的电脑安装mail服务器不能往外发的 呵呵 可以自己测试用

现在很多管理系统都是用fsocketopen方式连接邮件服务器并发送邮件的 可以使用163 126的邮箱 网上有一些模型的 就像是好多管理系统后台让填入用户名和密码 就能群发一样 如果你不介意的话 给你转发一个以前我自己改过的可以利用fsocketopen方式群发或者单发email的一共三个文件

MailClass.php 》》》》》》

?php

class Smtp

{

var $host; //主机

var $port; //端口 一般为25

var $user; //SMTP认证的帐号

var $pass; //认证密码

var $debug = false; //是否显示和服务器会话信息?

var $conn;

var $result_str; //结果

var $in; //客户机发送的命令

var $from; //收件人收到邮件显示的源信箱

var $email; //真实的地址

var $to; //目标信箱

var $subject; //主题

var $body; //内容

var $error;

var $All;

function Smtp($array)

{

$this-host = $array[‘host’];

$this-port = $array[‘port’];

$this-email= $array[‘trueemail’];

$this-from = $array[‘from’];

$this-user = base64_encode($array[‘username’]);

$this-pass = base64_encode($array[‘password’]);

$this-debug = $array[‘debug’];

$this-socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);

if($this-socket){

$this-result_str = “创建SOCKET:”.socket_strerror(socket_last_error());

$this-debug_show($this-result_str);

}

else

die(“初始化失败,请检查您的网络连接和参数”);

$this-conn = socket_connect($this-socket,$this-host,$this-port);

if($this-conn){

$this-result_str = “创建SOCKET连接:”.socket_strerror(socket_last_error());

$this-debug_show($this-result_str);

}

else

die(“初始化失败,请检查您的网络连接和参数”);

$this-result_str = “服务器应答:font color=#cc0000″.socket_read ($this-socket, 1024).”/font”;

$this-debug_show($this-result_str);

}

function debug_show($str)

{

if($this-debug)

{

echo $str.”p\r\n”;

}

}

function setmail($to,$subject,$body){

$this-to = $to;

$this-subject = $subject;

$this-body = $body;

$All =”Content-type:text/html;charset=gb2312\r\n”; //邮件的编码方式可以根据自己的需要改

$All .= “From:”.$this-from.”\r\n”;

$All .= “To:”.$this-to.”\r\n”;

$All .= “Subject:”.$this-subject.”\r\n\r\n”;

$All .= $this-body;

$this-All = $All;

}

/**

* 发送邮件部分

* 接收邮箱数组

*/

function send($toarray,$subject,$body)

{

//以下是和服务器会话

$this-in = “EHLO HELO\r\n”;

$this-docommand();

$this-in = “AUTH LOGIN\r\n”;

$this-docommand();

$this-in = $this-user.”\r\n”;

$this-docommand();

$this-in = $this-pass.”\r\n”;

$this-docommand();

foreach( $toarray as $to ) {

$this – setmail($to,$subject,$body);

$this-in = “RSET\r\n”;

$this-docommand();

$this-in = “MAIL FROM:”.$this-email.”\r\n”;

$this-docommand();

$this-in = “RCPT TO:”.$this-to.”\r\n”;

$this-docommand();

$this-in = “DATA\r\n”;

$this-docommand();

$this-in = $this-All.”\r\n.\r\n”;

$this-docommand();

}

$this-in = “QUIT\r\n”;

$this-docommand();

//结束,关闭连接

}

function docommand()

{

socket_write ($this-socket, $this-in, strlen ($this-in));

$this-debug_show(“Client Action:”.$this-in);

$this-result_str = “Server:font color=#cc0000″.socket_read ($this-socket, 1024).”/font”;

$this-debug_show($this-result_str);

}

}

?

MailConfig.inc.php 》》》》》》

?php

$mailconfig[‘host’] = “smtp.126.com”; //主机

$mailconfig[‘port’] = “25”; //端口 一般为25

$mailconfig[‘trueemail’] = “mhz1600@126.com”; //真实的地址

$mailconfig[‘username’] = “mhz1600”; //SMTP认证的帐号

$mailconfig[‘password’] = “*****”; //改成自己的

$mailconfig[‘debug’] = false; //是否显示和服务器会话信息?

$mailconfig[‘from’] = “test@test.com”; //显示给用户的发件人

include_once “MailClass.php”;

set_time_limit(180);

?

SendDemo.php 》》》》》》

?php

include_once “MailConfig.inc.php”;

//简单的临时码验证 当前时间(到小时)的验证码

//if( empty($_GET[‘s’]) || $_GET[‘s’] != md5(date(‘Y-m-d-H’,time())) ) {header(“http/1.1 404″); die(”);}

//发送email

if( isset($_POST[‘sendmail’]) ) {

if( isset($_POST[‘from’]) ) $mailconfig[‘from’] = $_POST[‘from’];

$smtp = new Smtp($mailconfig);

$title = $_POST[‘title’];

//获取post的email正文

if( get_magic_quotes_gpc() ) $message = $_POST[‘message’];

else $message = addslashes($_POST[‘message’]);

//从email列表/文档中分离出所有的email地址

$pregstr = “@[a-zA-Z0-9\_][0-9a-zA-Z\.\-\_]+\@[0-aA-Za-z\-\_]+\.[0-9a-zA-Z\.\-\_]+@is”;

$temp = array();

preg_match_all($pregstr,$_POST[’emails’],$temp);

$toarray = $temp[0];

//var_dump($toarray);

$smtp-send($toarray,$title,$message);

die(“操作完成!A href=”.$_SERVER[‘PHP_SELF’].”?s=”.md5(date(‘Y-m-d-H’,time())).”继续发送其他/a a href=# onclick=window.close()关闭/a”);

}

else {

if( isset($_POST[’emails’]) ) {

if( is_array($_POST[’emails’]) )

$emails = implode(“\t”,$_POST[’emails’]);

else

$emails = $_POST[’emails’];

}

else $emails = “”;

?

html

head

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″style type=”text/css”

!–

body,td,th {

font-size: 12px;

}

/style/head

body

form id=”form1″ name=”form1″ method=”post” action=””

table width=”600″ border=”1″ align=”center” cellpadding=”3″ cellspacing=”0″ bordercolordark=”#FFFFFF” bordercolorlight=”#eeeeee”

tr

td width=”66″发件人:/td

td width=”516″input name=”from” type=”text” value=”?php echo $mailconfig[‘from’]; ?” 可以直接修改mailconfig文件中的email/td

/tr

tr

td邮件标题:/td

tdinput name=”title” type=”text” value=”邮件群发测试标题!” size=”60″/td

/tr

tr

td收件人:br/td

tdtextarea name=”emails” cols=”60″ rows=”5″?php echo $emails; ?/textarea/td

/tr

tr

td邮件正文:br

【html】/td

tdtextarea name=”message” cols=”60″ rows=”10″邮件群发测试!谢谢~!/textarea/td

/tr

tr

td /td

tdinput type=”submit” name=”sendmail” value=” 发送邮件 ” /td

/tr

/table

/form

?

}

?

/body

/html

使用方式 运行senddemo.php就行 确定本地或者服务器开启了fsocketopen支持 在输入框可以多种格式的的输入很多email 程序用正则表达式匹配出所有的email地址 通过服务器循环对话的方式不断的发送邮件 看看那个demo的流程就明白了

【郑重声明:mailclass修改自网上的模型 其他本人原创,版权不究 欢迎分享】

+———————广告————————-+

那一天:回忆,让生活更美好

独享人生中那个特别的日子,记录从那一天开始的幸福

期待您的加入,欢迎提供宝贵的意见建议

+————————————————–+

+——————–补充——————–+

发送邮件的服务器(smtp)并不是网址 126发送邮件的服务器是 smtp.126.com 网易163的发送邮件服务器是 smtp.163.com 所有邮箱对于这个都有说明的 还有一个就是能够使用这个功能的好象新注册的邮箱不太好用 因为网易在2006年10对邮箱进行过调整 在此之前注册的都没问题 在这之后注册的好像开通一些其他的功能并且使用了一段时间才行的

smtp服务器的链接可以在命令提示行下测试 就是使用上面的命令:

首先 telnet smtp.126.com 25

因为smtp使用的25端口提供服务的 然后就会看到

220 126.com Anti-spam GT for Coremail System (126com[071018])

输入 EHLO HELO

服务器返回

250-mail

250-PIPELINING

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250 8BITMIME

输入 AUTH LOGIN

服务器返回

334 dXNlcm5hbWU6

然后再输入通过base64加密的用户名和密码 就能通过命令来和服务器对话 包括发送邮件等功能

具体的如果有兴趣更多命令自己查一下

这个php的程序就是模拟这个功能来实现的

如果你用telnet直接连不上的话 说明服务器是错误的 。。

关于php中的mail函数

发邮件建议使用phpmailer,用自带的函数需要服务器权限和修改php.ini参数不实际。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/286842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-23 03:48
下一篇 2024-12-23 03:48

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29

发表回复

登录后才能评论