PHP使用smtp发送邮件

来源:互联网 发布:浪潮云会计软件 编辑:程序博客网 时间:2024/05/17 05:13


PHP 使用smtp发送邮件,首先你要有个邮箱,可以是163的,可以是新浪的,不建议使用QQ的,因为在

测试邮件发送的时候,QQ经常判断邮件为垃圾邮件的!在开发之前要先设置邮箱开启smtp,一般在邮箱

设置中可以开启!好吧,以下是两个方法,由于是在thinkphp3.2.1的框架上写的,所有有些地方会写

得奇怪!如果套用到其他框架或低于thinkphp3.2的版本,都要做小量的修改

public function _sendmail($uemail,$subject,$body)
{
$msetting=M('smtp');
$config_mail = $msetting->find(1);
$mailend = explode('.',$config_mail['smtp_host']);
        $fromemail = $config_mail['smtp_user'].'@'.$mailend[1].'.'.$mailend[2];//构建邮箱

        $smtpserver     =     $config_mail['smtp_host'];//SMTP服务器
        $smtpserverport =    $config_mail['smtp_port'];//SMTP服务器端口
        $smtpusermail     =     $fromemail;//SMTP服务器的用户邮箱
        $smtpuser         =     $config_mail['smtp_user'];//SMTP服务器的用户帐号
        $smtppass         =     $config_mail['smtp_pass'];//SMTP服务器的用户密码
        $smtpemailto     =     $uemail;//发送给谁
        $mailsubject     =     $subject;//邮件主题
        $mailtime        =    date("Y-m-d H:i:s");
        $mailbody         =     $body;//邮件内容
                 
        $utfmailbody    =    iconv("UTF-8","GB2312",$mailbody);//转换邮件编码 
        $mailtype         =     "HTML";//邮件格式(HTML/TXT),TXT为文本邮件       
        import ("Org.Util.Smtp");

        $newsmtp = new \Smtp();
        $smtp = $newsmtp->smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这

里面的一个true是表示使用身份验证,否则不使用身份验证.
        $newsmtp->debug = FALSE;//是否显示发送的调试信息 FALSE or TRUE
        $ret = $newsmtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $utfmailbody, 

$mailtype);
}

public function index(){
      $sendmail = "kitwujiajian@sina.com";
           $zhuti = "test smtp";
           $body = "hello world";
           $this->_sendmail($sendmail,$zhuti,$body);
}




当调用index()方法时候,会自动发邮件到kitwujiajian@sina.com,主题是test smtp,内容是hello 

world,_sendmail()方法中,我将smtp的资料保存到数据库了,分别需要输入服务器,端口,邮箱账号

,邮箱密码
我用的是新浪邮箱
新浪的服务器  smtp.sina.com
端口 25

有种邮箱的服务器地址和端口不一样,这些在百度可以查到出来


源码我已经上传到我个人git上:http://git.oschina.net/kakenwu/case.git

PHP 使用smtp发送邮件,首先你要有个邮箱,可以是163的,可以是新浪的,不建议使用QQ的,因为在

测试邮件发送的时候,QQ经常判断邮件为垃圾邮件的!在开发之前要先设置邮箱开启smtp,一般在邮箱

设置中可以开启!好吧,以下是两个方法,由于是在thinkphp3.2.1的框架上写的,所有有些地方会写

得奇怪!如果套用到其他框架或低于thinkphp3.2的版本,都要做小量的修改

public function _sendmail($uemail,$subject,$body)
{
$msetting=M('smtp');
$config_mail = $msetting->find(1);
$mailend = explode('.',$config_mail['smtp_host']);
        $fromemail = $config_mail['smtp_user'].'@'.$mailend[1].'.'.$mailend[2];//构建邮箱

        $smtpserver     =     $config_mail['smtp_host'];//SMTP服务器
        $smtpserverport =    $config_mail['smtp_port'];//SMTP服务器端口
        $smtpusermail     =     $fromemail;//SMTP服务器的用户邮箱
        $smtpuser         =     $config_mail['smtp_user'];//SMTP服务器的用户帐号
        $smtppass         =     $config_mail['smtp_pass'];//SMTP服务器的用户密码
        $smtpemailto     =     $uemail;//发送给谁
        $mailsubject     =     $subject;//邮件主题
        $mailtime        =    date("Y-m-d H:i:s");
        $mailbody         =     $body;//邮件内容
                 
        $utfmailbody    =    iconv("UTF-8","GB2312",$mailbody);//转换邮件编码 
        $mailtype         =     "HTML";//邮件格式(HTML/TXT),TXT为文本邮件       
        import ("Org.Util.Smtp");

        $newsmtp = new \Smtp();
        $smtp = $newsmtp->smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这

里面的一个true是表示使用身份验证,否则不使用身份验证.
        $newsmtp->debug = FALSE;//是否显示发送的调试信息 FALSE or TRUE
        $ret = $newsmtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $utfmailbody, 

$mailtype);
}

public function index(){
      $sendmail = "kitwujiajian@sina.com";
           $zhuti = "test smtp";
           $body = "hello world";
           $this->_sendmail($sendmail,$zhuti,$body);
}




当调用index()方法时候,会自动发邮件到kitwujiajian@sina.com,主题是test smtp,内容是hello 

world,_sendmail()方法中,我将smtp的资料保存到数据库了,分别需要输入服务器,端口,邮箱账号

,邮箱密码
我用的是新浪邮箱
新浪的服务器  smtp.sina.com
端口 25

有种邮箱的服务器地址和端口不一样,这些在百度可以查到出来


源码我已经上传到我个人git上:http://git.oschina.net/kakenwu/case.git

0 0
原创粉丝点击