关于phpmailer的使用

Posted By: agon,  Published:January 20th, 2008   

很多空间商现在都需要验证才能发邮件,不可能让你改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   =   "name@163.com"; //填上你的邮箱
$mail-> Password   =   "password";   //  密码
$mail-> From = "name@163.com"; //邮件来源,
因为用的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,正常。

4 条回复

添加你的回复

  1. 你做的很好

  2. 是Root User这个用户名发邮件了,要怎改?

  3. 成功率怎么样

    • 试一下不就知道啦

你的回复