PHP使用gmail发邮件

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

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

请将“[email protected]”替换成你的gmail,写上对应密码。将“[email protected]”改为要你要测试的邮箱。

<?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 = "[email protected]"; // SMTP服务器上此邮箱的用户名,有的只需要@前面的部分,有的需要全名。请替换为正确的邮箱用户名   
    $mail->Password = "******"; // SMTP服务器上该邮箱的密码,请替换为正确的密码   
    $mail->From = "[email protected]"; // SMTP服务器上发送此邮件的邮箱,请替换为正确的邮箱,$mail->Username 的值是对应的。                  
    $mail->FromName = "yourName"; // 真实发件人的姓名等信息,这里根据需要填写   
    $mail->CharSet = "utf-8"; // 这里指定字符集!   
    //$mail->Encoding = "base64"; 
    $mail->AddAddress ( $sendto_email, $sendto_name ); // 收件人邮箱和姓名   
    //$mail->AddReplyTo('[email protected]',"管理员");//这一项根据需要而设   
    //$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
<?php
require_once "gmail.php";


echo "send mail begin";
echo "    ";
if(stmp_mail("[email protected]","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));
        }    


你可能感兴趣的:(PHP使用gmail发邮件)