很多空间商现在都需要验证才能发邮件,不可能让你改php.ini的,所以phpmail()没法使用,穷啊,自己解决吧,我只知道有两种解决办法,一种安装pear包,还有一种就是使用mail类,本文就是使用phpmailer通过smtp验证发送邮件,内容包括创建一个发送页面,可以利用phpmailer发送邮件包括多个附件,好了下面开始吧:
第一步: 确保你的空间可以使用phpmailer,最间的办法是创建一个php文件,在里面写上<?php phpinfo(); ?>,然后打开,再打开页面搜索sockets,如果发现是enabled,说明应该可以用。
第二步: 去phpmailer下载最新的phpmailer,在左边Downloads栏选择你要下载的类型,两个其内容一样。你可以在example栏和tutorial栏了解相关的例子和教程。
第三步: 解压文件夹,上传到你的空间,其实你只需要class.phpmailer.php和class.smtp.php还有language文件夹,索性都传上去吧。
第四步: 创建一个html表格,命名为mail.html,上传到和phpmailer同一个目录内代码如下:
<html> <head> <title>via phmailer send mail </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <center> <form name="phpmailer" action="send.php" method="POST" enctype="multipart/form-data"> 标记为*的为必填内容 <p>* Email to: <input type="text" name="Emailto"></p> <p>* Subject: <input type="text" name="Subject"> </p> <p>* Message:<br> <textarea name="Message" rows="15" cols="65"></textarea> <p>attachment:<br> <input type="file" name="attachment" ></p> <p>attachment2:<br> <input type="file" name="attachment2" ></p> <p><input type="submit" name="submit" value="Submit"></p> <p><input type="reset" name="reset" value="reset"></p> </form></center> </body> </html>
第五步: 上传发送邮件的php文件,命名为send.php,还是同一个目录,代码如下:
<?php require( "class.phpmailer.php"); //调用phpmailer $mail = new PHPMailer(); //$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); $EmailTo = Trim(stripslashes($_POST['Emailto']));//邮件发送至 $Subject = Trim(stripslashes($_POST['Subject']));//题目 //$Name = Trim(stripslashes($_POST['Name'])); $Message = Trim(stripslashes($_POST['Message']));//内容 $attachment = $_FILES['attachment']['name'];//附件名字 $path = $_FILES['attachment']['tmp_name'];//附件地址 //$type = $_FILES['attachment']['type']; $attachment2 = $_FILES['attachment2']['name'];//第二个附件 $path2 = $_FILES['attachment2']['tmp_name']; /* *********************************************************** 以下是你要修改的,我以163邮箱为例,听说以前申请的才可以,反正我的可以。 ************************ */ $mail-> IsSMTP(); // 确定使用smtp $mail-> Host = "smtp.163.com"; // 163的smtp地址 $mail-> SMTPAuth = true; // 打开smtp认证 $mail-> Username = "[email protected]"; //填上你的邮箱 $mail-> Password = "password"; // 密码 $mail-> From = "[email protected]"; //邮件来源, 因为用的163,所以必须是你的邮箱地址 $mail-> CharSet = "utf-8"; // 这里设定字符集 $mail-> Encoding = "base64"; //编码格式 $mail-> AddAddress( "$EmailTo", ""); //第二引号里是名字,可选项 //下面是回复地址可选项 //$mail-> AddReplyTo("回复的邮件地址","名字"); $mail-> WordWrap = 50; // 确定多少字换行 $mail-> AddAttachment($path,$attachment); // 添加附件 $mail-> AddAttachment($path2,$attachment2); // 第二个附件可选, 还想加的话,再加上一个就可以 //$mail-> IsHTML(true);//确定是否使用html格式 $mail-> Subject = "$Subject"; $mail-> Body = "$Message"; $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; exit; } echo "Message has been sent "; ?> </body> </html>
ok,我这里用的是163的帐号,修改为自己的就可以了,然后在浏览器内打开mail.html,填上该填的,点击submit,就可以发出去邮件了.如果空间提供邮件帐号,最好用空间的,修改源地址和发送地址会方便很多。
这个版本用起来一切正常,没有发现内容和附件名乱码问题。测试过163,hotmail,gmail,yahoo,正常。
你做的很好
是Root User这个用户名发邮件了,要怎改?
成功率怎么样
试一下不就知道啦