有很多朋友都遇到发送邮件的需求,他们先从网上下载一段代码,然后填好主题和内容,却发现怎么也发送失败,这里首先要弄清楚一点,发送邮件必须有邮件服务器完成,比如SMTP,POP3等邮件服务器,只运行代码就想发送邮件,相当于空中楼阁,无米之炊。对一个企业、个人来说,想要自己写代码发送邮件,必须先有自己的邮局账户,这样我们就能得到这些信息:
1、邮局服务器的IP;
2、邮局账户用户名;
3、对应2的账户密码。
有了这三项,在代码里设定之后,代码才能连接目标服务器,然后用此服务器来进行邮件的发送。
其中加色部分最终是由PHP服务器(比如Apache)和邮局服务器(比如SMPT)共同完成的。
以下提供一个代码,实现了邮件发送,注意send.php里面发送服务器、用户名和密码的配置:
form.php//是一个表单,用于提交要发送的目的邮箱地址:
<html> <body> <h3>phpmailer Unit Test</h3> 请你输入<font color="#FF6666">收信</font>的邮箱地址: <form name="phpmailer" action="send.php" method="post"> <input type="hidden" name="submitted" value="1"/> 邮箱地址: <input type="text" size="50" name="address" /> <br/> <input type="submit" value="发送"/> </form> </body> </html>
send.php//接收参数,发送邮件,特别注意颜色部分的配置
<?php require("class.phpmailer.php"); //下载的文件必须放在该文件所在目录 $mail = new PHPMailer(); //建立邮件发送类 $address = $_POST['address']; $mail->IsSMTP(); // 使用SMTP方式发送 $mail->Host = "11.11.11.11"; // 企业邮局的IP地址或者域名 $mail->SMTPAuth = true; // 启用SMTP验证功能 $mail->Username = "xx@crazyant.net"; // 邮局用户名(请填写完整的email地址) $mail->Password = "88558855"; // 邮局密码 $mail->From = "xx@crazyant.net"; //邮件发送者email地址 $mail->FromName = "crazyant"; $mail->AddAddress("$address", "");//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名") //$mail->AddReplyTo("", ""); //$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件 $mail->IsHTML(true); // set email format to HTML //是否使用HTML格式 $mail->Subject = "PHPMailer测试邮件"; //邮件标题 $mail->Body = "<table border='1'><tr><td>用户名</td><td>密码</td></tr><td>1122121</td><td>3322323</td></tr></table>"; //邮件内容 $mail->AltBody = "A=B<h1>C=D</h1>"; //附加信息,可以省略 if(!$mail->Send()){ echo "邮件发送失败. <p>"; echo "错误原因: " . $mail->ErrorInfo; exit; } echo "邮件发送成功"; ?>
send.php用到了一个PHPmail类,请到http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list进行下载
本教程PDF说明以及代码示例放在:http://www.kuaipan.cn/index.php?ac=file&oid=20099656671300541
下载密码: 2D6quK
最新发现用QQ号也可以发成功的,把邮箱地址设置成smtp.qq.com,然后把账号和密码分别写成自己的QQ邮箱和QQ邮箱的密码,也能成功。由此推断,126、163、GMAIL,都可以填在这个地方,都能发送成功的。
不知道为什么用gmail总是发不出去
我感觉是不是被墙掉了,这个确实很没谱
请问,那个邮件内容可以添加模板吗
是的,可以用,谢谢啦
不客气,谢谢来访
有免费使用的SMTP服务器哦
// 使用SMTP方式发送
$mail->Host = "smtp.sina.com.cn";
// 企业邮局的IP地址或者域名
$mail->SMTPAuth = true;
// 启用SMTP验证功能
$mail->Username = "XXX@sina.com"; // 邮箱用户名(请填写完整的email地址)
$mail->Password = "XXXX"; // 邮箱密码
$mail->From = "XXX@sina.com";
邮箱 对应的免费SMTP服务器
01 @163.com smtp.163.com
02 @126.com smtp.126.com
03 Sina免费邮件 smtp.sina.com.cn
04 Gmail smtp.gmail.com (SSL)
05 @sohu.com smtp.sohu.com
06 21cn邮箱 smtp.21cn.com
07 Yahoo中国免费邮件smtp.mail.yahoo.com.cn
smtp.yahoo.cn
08 @hotmail.com/@msn.com 不支持SMTP
09 @qq.com smtp.qq.com,需要到邮箱里先设置开通
10 263电子邮局 smtp.263.net