实验室要举办一个会议,要我做一个会议的网站。使用了开源的openconf,十分省事。但发邮件简单的使用了PHP的mail函数,没有经过SMTP认证,发送的邮件很可能出现在对方的垃圾箱里,甚至会被退信。搜索了一下有很多PHP类库支持利用SMTP发送邮件,比如PHPMailer。

下面是利用PHPMailer实现的一个函数以及简单的测试代码。【注意,运行此函数需要openconf源代码根目录下的class.phpmailer.phpclass.smtp.php

请将“yourgmail@gmail.com”替换成你的gmail,写上对应密码。将“test@qq.com”改为要你要测试的邮箱。

<?php
//下面定义一个发送邮件的函数,已经测试通过。
//$sendto_email:邮件发送地址
//$subject:邮件主题
//$body:邮件正文内容
//$sendto_name邮件接受方的姓名,发送方起的名字。一般可省。
function stmp_mail($sendto_email, $subject = null, $body = null, $sendto_name = null) {

//vendor ( "PHPMailer.class#phpmailer" ); //导入函数包的类class.phpmailer.php
require_once("class.phpmailer.php");

$mail = new PHPMailer (); //新建一个邮件发送类对象
$mail->IsSMTP (); // send via SMTP
$mail->Port = 25; //发送端口
$mail->Host = "ssl://smtp.gmail.com:465"; // SMTP 邮件服务器地址,这里需要替换为发送邮件的邮箱所在的邮件服务器地址, 这里使用了gmail的SMTP设置
$mail->SMTPAuth = true; // turn on SMTP authentication 邮件服务器验证开
$mail->Username = "yourgmail@gmail.com"; // SMTP服务器上此邮箱的用户名,有的只需要@前面的部分,有的需要全名。请替换为正确的邮箱用户名
$mail->Password = "******"; // SMTP服务器上该邮箱的密码,请替换为正确的密码
$mail->From = "yourgmail@gmail.com"; // SMTP服务器上发送此邮件的邮箱,请替换为正确的邮箱,$mail->Username 的值是对应的。
$mail->FromName = "yourName"; // 真实发件人的姓名等信息,这里根据需要填写
$mail->CharSet = "utf-8"; // 这里指定字符集!
//$mail->Encoding = "base64";
$mail->AddAddress ( $sendto_email, $sendto_name ); // 收件人邮箱和姓名
//$mail->AddReplyTo('yourgmail@gmail.com',"管理员");//这一项根据需要而设
//$mail->WordWrap = 50; // set word wrap
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // 附件处理
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
//$mail->IsHTML ( true ); // send as HTML
$mail->Subject = $subject; // 邮件主题
// 邮件内容
/*
$mail->Body = "<html><head>
<meta http-equiv=”Content-Language” content=”zh-cn”>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″></head>
<body>'.$body.'</body></html>";
$mail->AltBody = "text/html";
*/
$mail->Body = $body;
if (! $mail->Send ()) {
//邮件发送失败
return false;
} else {
//邮件发送成功
return true;
}

}
//function end

?>
将上面代码存为gmail.php,编写下面的main.php
<?phprequire_once "gmail.php";echo "send mail begin";echo "  ";if(stmp_mail("your@qq.com","subject","body"))  echo "success";else  echo "failed";echo "  ";echo "send mail end";?>

使用浏览器访问mail.php测试。


______________UPDATED 2013.04.27___________________________________

下面市openconf需要做的更改:

  1. 将上述文件gmail.php放在opencof根目录
  2. 修改include.php
    • 在<?php 下面一行添加
      • require_once "gmail.php";  
    • 替换函数oc_mail:
      • function oc_mail($to, $subject, $body, $hdr='', $enc='quoted-printable') {
        global $OC_configAR;
        $headers = (empty($hdr) ? $OC_configAR['OC_mailHeaders'] : $hdr);
        $headers = "MIME-Version: 1.0\r\n" . $headers . "\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: " . $enc;
        $headers = preg_replace("/\r/", "", $headers);
        return (stmp_mail($to, $subject, $body));
        }


更多相关文章

  1. 使用GMail SMTP服务器从PHP页面发送电子邮件
  2. 来自php表单的样式电子邮件
  3. 请问如何用php实现表单提交后以邮件的形式把表单内容发到邮箱中
  4. PHP接收到的$_POST数据里的邮箱符号@变成了%40
  5. 如何检查电子邮件id是否存在?
  6. 怎么使用PHPMailer实现邮件的发送??
  7. Yii2之发送电子邮件
  8. 如何在php imap函数中看到看不见的电子邮件
  9. MySQL定时检查是否宕机并邮件通知

随机推荐

  1. 《Java编程思想(第4版)》读书笔记
  2. 几款代码高亮组件的体验,说不定你以后会用
  3. 单例模式,这个面试题真那么简单吗?
  4. 分享 1 个一次性免费获得极客时间 2-3 个
  5. 《Java入门1•2•3》读书笔记
  6. 该不该造自己的轮子?
  7. 解答 H 大的公布的 10 道 Java 测试题
  8. 《***与画家》读书笔记
  9. MySQL 如何进行慢 SQL 优化?
  10. 冒泡排序(Java)