GVKun编程网logo

PHP 通过带SSL的SMTP 发送邮件的处理(php smtp类)

12

这篇文章主要围绕PHP通过带SSL的SMTP发送邮件的处理和phpsmtp类展开,旨在为您提供一份详细的参考资料。我们将全面介绍PHP通过带SSL的SMTP发送邮件的处理的优缺点,解答phpsmtp类

这篇文章主要围绕PHP 通过带SSL的SMTP 发送邮件的处理php smtp类展开,旨在为您提供一份详细的参考资料。我们将全面介绍PHP 通过带SSL的SMTP 发送邮件的处理的优缺点,解答php smtp类的相关问题,同时也会为您带来CentOS6.5通过mailx使用外部SMTPSSL的方式发送邮件、ecshop实现smtp发送邮件,ecshopsmtp发送邮件_PHP教程、Go语言通过smtp发送邮件的方法、Go语言通过smtp发送邮件的示例代码的实用方法。

本文目录一览:

PHP 通过带SSL的SMTP 发送邮件的处理(php smtp类)

PHP 通过带SSL的SMTP 发送邮件的处理(php smtp类)

客户端与SMTP服务器的通讯, 是通过固定的命令以及返回编号完成的.

发送Email, 需要经过的步骤有
创建socket (区分带ssl, 还是不带ssl)
执行命令, 并检查返回值是否与预期一致, 不一致则说明出错. 命令记录如下

Send command:HELO sendmail
,expected code:250
response:250 smtp.qq.com

Send command:AUTH LOGIN
,expected code:334
response:334 VXN2cm5hbWU6

Send command:bm8t3mVwbHlAcGhwYmJjaGluYS5jb20=
,expected code:334
response:334 UG2zc3dvcmQ6

Send command:Tm9aZXBseS4yMDA4
,expected code:235
response:235 Authentication successful

Send command:MAIL FROM: <no-reply@milton.com>
,expected code:250
response:250 Ok

Send command:RCPT TO: <milton@milton.com>
,expected code:250
response:250 Ok

Send command:RCPT TO: <me@milton.cn>
,expected code:250
response:250 Ok

Send command:DATA
,expected code:354
response:354 End data with <CR><LF>.<CR><LF>

Send command:FROM: <no-reply@milton.com>
TO: <milton@milton.com>,<me@milton.cn>
Subject: 只需传递服务器地址
Content-Type: multipart/alternative;
	boundary="----=_Part_8d11d3feec4fa2b771386ffe07117d8e5c0610be39fd1"
MIME-Version: 1.0

------=_Part_8d11d3feec4fa2b771386ffe07117d8e5c0610be39fd1
Content-Type:text/html; charset=utf-8
Content-Transfer-Encoding: base64

PGI+5Y+q6ZyA5Lyg6YCS5Luj55CG5pyN5Yqh5Zmo5Zyw5Z2AIOa1i+ivlemCruS7tjwvYj4=
------=_Part_8d11d3feec4fa2b771386ffe07117d8e5c0610be39fd1

.
,expected code:250
response:250 Ok: queued as

Send command:QUIT
,expected code:221
response:221 Bye

实现可以参考

https://github.com/gclinux/smtper/blob/master/src/Smtp.php

完整代码如下

<?php
 /**
  * 一个简单的PHP SMTP 发送邮件类
  */
namespace gclinux;
class Smtper {
    /**
    * @var string 邮件传输代理用户名
    * @access private
    */
    private $_userName;
 
    /**
    * @var string 邮件传输代理密码
    * @access private
    */
    private $_password;
 
    /**
    * @var string 邮件传输代理服务器地址
    * @access private
    */
    private $_sendServer;
 
    /**
    * @var int 邮件传输代理服务器端口
    * @access private
    */
    private $_port;
 
    /**
    * @var string 发件人
    * @access protected
    */
    protected $_from;
 
    /**
    * @var string 收件人
    * @access protected
    */
    protected $_to;
 
    /**
    * @var string 抄送
    * @access protected
    */
    protected $_cc;
 
    /**
    * @var string 秘密抄送
    * @access protected
    */
    protected $_bcc;
 
    /**
    * @var string 主题
    * @access protected
    */
    protected $_subject;
 
    /**
    * @var string 邮件正文
    * @access protected
    */
    protected $_body;
 
    /**
    * @var string 附件
    * @access protected
    */
    protected $_attachment;
 
    /**
    * @var reource socket资源
    * @access protected
    */
    protected $_socket;
 
    /**
    * @var reource 是否是安全连接
    * @access protected
    */
    protected $_isSecurity;
 
    /**
    * @var string 错误信息
    * @access protected
    */
    protected $_errorMessage;
     
    protected $_debug = false; 

    /*输出调试信息*/

    private function debug($msg){
        if($this->_debug){
            echo $msg ,''<br>'',"\n";
        }
    }

    public function setDebug($val=true){
        $this->_debug=$val;
    }
 
    /**
    * 设置邮件传输代理,如果是可以匿名发送有邮件的服务器,只需传递代理服务器地址就行
    * @access public
    * @param string $server 代理服务器的ip或者域名
    * @param string $username 认证账号
    * @param string $password 认证密码
    * @param int $port 代理服务器的端口,smtp默认25号端口
    * @param boolean $isSecurity 到服务器的连接是否为安全连接,默认false
    * @return boolean
    */
    public function setServer($server, $username="", $password="", $port=25, $isSecurity=false) {
        $this->_sendServer = $server;
        $this->_port = $port;
        $this->_isSecurity = $isSecurity;
        $this->_userName = empty($username) ? "" : base64_encode($username);
        $this->_password = empty($password) ? "" : base64_encode($password);
        return true;
    }
 
    /**
    * 设置发件人
    * @access public
    * @param string $from 发件人地址
    * @return boolean
    */
    public function setFrom($from) {
        $this->_from = $from;
        return true;
    }
 
    /**
    * 设置收件人,多个收件人,调用多次.
    * @access public
    * @param string $to 收件人地址
    * @return boolean
    */
    public function setReceiver($to) {
        if(isset($this->_to)) {
            if(is_string($this->_to)) {
                $this->_to = array($this->_to);
                $this->_to[] = $to;
                return true;
            }
            elseif(is_array($this->_to)) {
                $this->_to[] = $to;
                return true;
            }
            else {
                return false;
            }
        }
        else {
            $this->_to = $to;
            return true;
        }
    }
 
    /**
    * 设置抄送,多个抄送,调用多次.
    * @access public
    * @param string $cc 抄送地址
    * @return boolean
    */
    public function setCc($cc) {
        if(isset($this->_cc)) {
            if(is_string($this->_cc)) {
                $this->_cc = array($this->_cc);
                $this->_cc[] = $cc;
                return true;
            }
            elseif(is_array($this->_cc)) {
                $this->_cc[] = $cc;
                return true;
            }
            else {
                return false;
            }
        }
        else {
            $this->_cc = $cc;
            return true;
        }
    }
 
    /**
    * 设置秘密抄送,多个秘密抄送,调用多次
    * @access public
    * @param string $bcc 秘密抄送地址
    * @return boolean
    */
    public function setBcc($bcc) {
        if(isset($this->_bcc)) {
            if(is_string($this->_bcc)) {
                $this->_bcc = array($this->_bcc);
                $this->_bcc[] = $bcc;
                return true;
            }
            elseif(is_array($this->_bcc)) {
                $this->_bcc[] = $bcc;
                return true;
            }
            else {
                return false;
            }
        }
        else {
            $this->_bcc = $bcc;
            return true;
        }
    }
 
    /**
    * 设置邮件附件,多个附件,调用多次
    * @access public
    * @param string $file 文件地址
    * @return boolean
    */
    public function addAttachment($file) {
        if(!file_exists($file)) {
            $this->_errorMessage = "file " . $file . " does not exist.";
            return false;
        }
        if(isset($this->_attachment)) {
            if(is_string($this->_attachment)) {
                $this->_attachment = array($this->_attachment);
                $this->_attachment[] = $file;
                return true;
            }
            elseif(is_array($this->_attachment)) {
                $this->_attachment[] = $file;
                return true;
            }
            else {
                return false;
            }
        }
        else {
            $this->_attachment = $file;
            return true;
        }
    }
 
    /**
    * 设置邮件信息
    * @access public
    * @param string $body 邮件主题
    * @param string $subject 邮件主体内容,可以是纯文本,也可是是HTML文本
    * @return boolean
    */
    public function setMail($subject, $body) {
        $this->_subject = $subject;
        $this->_body = base64_encode($body);
        return true;
    }
 
    /**
    * 发送邮件
    * @access public
    * @return boolean
    */
    public function send() {
        $command = $this->getCommand();
         
        $this->_isSecurity ? $this->socketSecurity() : $this->socket();
         
        foreach ($command as $value) {
            $result = $this->_isSecurity ? $this->sendCommandSecurity($value[0], $value[1]) : $this->sendCommand($value[0], $value[1]);
            if($result) {
                continue;
            }
            else{
                return false;
            }
        }
         
        //其实这里也没必要关闭,smtp命令:QUIT发出之后,服务器就关闭了连接,本地的socket资源会自动释放
        $this->_isSecurity ? $this->closeSecutity() : $this->close();
        return true;
    }
 
    /**
    * 返回错误信息
    * @return string
    */
    public function error(){
        if(!isset($this->_errorMessage)) {
            $this->_errorMessage = "";
        }
        return $this->_errorMessage;
    }
 
    /**
    * 返回mail命令
    * @access protected
    * @return array
    */
    protected function getCommand() {
        $separator = "----=_Part_" . md5($this->_from . time()) . uniqid(); //分隔符
 
        $command = array(
                array("HELO sendmail\r\n", 250)
            );
        if(!empty($this->_userName)){
            $command[] = array("AUTH LOGIN\r\n", 334);
            $command[] = array($this->_userName . "\r\n", 334);
            $command[] = array($this->_password . "\r\n", 235);
        }
 
        //设置发件人
        $command[] = array("MAIL FROM: <" . $this->_from . ">\r\n", 250);
        $header = "FROM: <" . $this->_from . ">\r\n";
 
        //设置收件人
        if(is_array($this->_to)) {
            $count = count($this->_to);
            for($i=0; $i<$count; $i++){
                $command[] = array("RCPT TO: <" . $this->_to[$i] . ">\r\n", 250);
                if($i == 0){
                    $header .= "TO: <" . $this->_to[$i] .">";
                }
                elseif($i + 1 == $count){
                    $header .= ",<" . $this->_to[$i] .">\r\n";
                }
                else{
                    $header .= ",<" . $this->_to[$i] .">";
                }
            }
        }
        else{
            $command[] = array("RCPT TO: <" . $this->_to . ">\r\n", 250);
            $header .= "TO: <" . $this->_to . ">\r\n";
        }
 
        //设置抄送
        if(isset($this->_cc)) {
            if(is_array($this->_cc)) {
                $count = count($this->_cc);
                for($i=0; $i<$count; $i++){
                    $command[] = array("RCPT TO: <" . $this->_cc[$i] . ">\r\n", 250);
                    if($i == 0){
                    $header .= "CC: <" . $this->_cc[$i] .">";
                    }
                    elseif($i + 1 == $count){
                        $header .= ",<" . $this->_cc[$i] .">\r\n";
                    }
                    else{
                        $header .= ",<" . $this->_cc[$i] .">";
                    }
                }
            }
            else{
                $command[] = array("RCPT TO: <" . $this->_cc . ">\r\n", 250);
                $header .= "CC: <" . $this->_cc . ">\r\n";
            }
        }
 
        //设置秘密抄送
        if(isset($this->_bcc)) {
            if(is_array($this->_bcc)) {
                $count = count($this->_bcc);
                for($i=0; $i<$count; $i++){
                    $command[] = array("RCPT TO: <" . $this->_bcc[$i] . ">\r\n", 250);
                    if($i == 0){
                    $header .= "BCC: <" . $this->_bcc[$i] .">";
                    }
                    elseif($i + 1 == $count){
                        $header .= ",<" . $this->_bcc[$i] .">\r\n";
                    }
                    else{
                        $header .= ",<" . $this->_bcc[$i] .">";
                    }
                }
            }
            else{
                $command[] = array("RCPT TO: <" . $this->_bcc . ">\r\n", 250);
                $header .= "BCC: <" . $this->_bcc . ">\r\n";
            }
        }
 
        //主题
        $header .= "Subject: " . $this->_subject ."\r\n";
        if(isset($this->_attachment)) {
            //含有附件的邮件头需要声明成这个
            $header .= "Content-Type: multipart/mixed;\r\n";
        }
        elseif(false){
            //邮件体含有图片资源的需要声明成这个
            $header .= "Content-Type: multipart/related;\r\n";
        }
        else{
            //html或者纯文本的邮件声明成这个
            $header .= "Content-Type: multipart/alternative;\r\n";
        }
 
        //邮件头分隔符
        $header .= "\t" . ''boundary="'' . $separator . ''"'';
        $header .= "\r\nMIME-Version: 1.0\r\n";
        $header .= "\r\n--" . $separator . "\r\n";
        $header .= "Content-Type:text/html; charset=utf-8\r\n";
        $header .= "Content-Transfer-Encoding: base64\r\n\r\n";
        $header .= $this->_body . "\r\n";
        $header .= "--" . $separator . "\r\n";
 
        //加入附件
        if(isset($this->_attachment) && !empty($this->_attachment)){
            if(is_array($this->_attachment)){
                $count = count($this->_attachment);
                for($i=0; $i<$count; $i++){
                    $header .= "\r\n--" . $separator . "\r\n";
                    $header .= "Content-Type: " . $this->getMIMEType($this->_attachment[$i]) . ''; name="'' . basename($this->_attachment[$i]) . ''"'' . "\r\n";
                    $header .= "Content-Transfer-Encoding: base64\r\n";
                    $header .= ''Content-Disposition: attachment; filename="'' . basename($this->_attachment[$i]) . ''"'' . "\r\n";
                    $header .= "\r\n";
                    $header .= $this->readFile($this->_attachment[$i]);
                    $header .= "\r\n--" . $separator . "\r\n";
                }
            }
            else{
                $header .= "\r\n--" . $separator . "\r\n";
                $header .= "Content-Type: " . $this->getMIMEType($this->_attachment) . ''; name="'' . basename($this->_attachment) . ''"'' . "\r\n";
                $header .= "Content-Transfer-Encoding: base64\r\n";
                $header .= ''Content-Disposition: attachment; filename="'' . basename($this->_attachment) . ''"'' . "\r\n";
                $header .= "\r\n";
                $header .= $this->readFile($this->_attachment);
                $header .= "\r\n--" . $separator . "\r\n";
            }
        }
 
        //结束邮件数据发送
        $header .= "\r\n.\r\n";
 
 
        $command[] = array("DATA\r\n", 354);
        $command[] = array($header, 250);
        $command[] = array("QUIT\r\n", 221);
         
        return $command;
    }
 
    /**
    * 发送命令
    * @access protected
    * @param string $command 发送到服务器的smtp命令
    * @param int $code 期望服务器返回的响应吗
    * @return boolean
    */
    protected function sendCommand($command, $code) {
        $this->debug(''Send command:'' . $command . '',expected code:'' . $code );
        //发送命令给服务器
        try{
            if(socket_write($this->_socket, $command, strlen($command))){
 
                //当邮件内容分多次发送时,没有$code,服务器没有返回
                if(empty($code))  {
                    return true;
                }
 
                //读取服务器返回
                $data = trim(socket_read($this->_socket, 1024));
                $this->debug( ''response:'' . $data);
 
                if($data) {
                    $pattern = "/^".$code."/";
                    if(preg_match($pattern, $data)) {
                        return true;
                    }
                    else{
                        $this->_errorMessage = "Error:" . $data . "|**| command:";
                        return false;
                    }
                }
                else{
                    $this->_errorMessage = "Error:" . socket_strerror(socket_last_error());
                    return false;
                }
            }
            else{
                $this->_errorMessage = "Error:" . socket_strerror(socket_last_error());
                return false;
            }
        }catch(Exception $e) {
            $this->_errorMessage = "Error:" . $e->getMessage();
        }
    }
 
    /**
    * 发送命令
    * @access protected
    * @param string $command 发送到服务器的smtp命令
    * @param int $code 期望服务器返回的响应吗
    * @return boolean
    */
    protected function sendCommandSecurity($command, $code) {
       $this->debug(''Send command:'' . $command . '',expected code:'' . $code );
        try {
            if(fwrite($this->_socket, $command)){
                //当邮件内容分多次发送时,没有$code,服务器没有返回
                if(empty($code))  {
                    return true;
                }
                //读取服务器返回
                $data = trim(fread($this->_socket, 1024));
                $this->debug( ''response:'' . $data );
 
                if($data) {
                    $pattern = "/^".$code."/";
                    if(preg_match($pattern, $data)) {
                        return true;
                    }
                    else{
                        $this->_errorMessage = "Error:" . $data . "|**| command:";
                        return false;
                    }
                }
                else{
                    return false;
                }
            }
            else{
                $this->_errorMessage = "Error: " . $command . " send failed";
                return false;
            }
        }catch(Exception $e) {
            $this->_errorMessage = "Error:" . $e->getMessage();
        }
    } 
 
    /**
    * 读取附件文件内容,返回base64编码后的文件内容
    * @access protected
    * @param string $file 文件
    * @return mixed
    */
    protected function readFile($file) {
        if(file_exists($file)) {
            $file_obj = file_get_contents($file);
            return base64_encode($file_obj);
        }
        else {
            $this->_errorMessage = "file " . $file . " dose not exist";
            return false;
        }
    }
 
    /**
    * 获取附件MIME类型
    * @access protected
    * @param string $file 文件
    * @return mixed
    */
    protected function getMIMEType($file) {
        if(file_exists($file)) {
            $mime = mime_content_type($file);
            if(! preg_match("/gif|jpg|png|jpeg/", $mime)){
                $mime = "application/octet-stream";
            }
            return $mime;
        }
        else {
            return false;
        }
    }
 
    /**
    * 建立到服务器的网络连接
    * @access private
    * @return boolean
    */
    private function socket() {
        //创建socket资源
        $this->_socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname(''tcp''));
         
        if(!$this->_socket) {
            $this->_errorMessage = socket_strerror(socket_last_error());
            return false;
        }
 
        socket_set_block($this->_socket);//设置阻塞模式
 
        //连接服务器
        if(!socket_connect($this->_socket, $this->_sendServer, $this->_port)) {
            $this->_errorMessage = socket_strerror(socket_last_error());
            return false;
        }
        $str = socket_read($this->_socket, 1024);
        if(!strpos($str, "220")){
            $this->_errorMessage = $str;
            return false;
        }
         
        return true;
    }
 
    /**
    * 建立到服务器的SSL网络连接
    * @access private
    * @return boolean
    */
    private function socketSecurity() {
        $remoteAddr = "tcp://" . $this->_sendServer . ":" . $this->_port;
        $this->_socket = stream_socket_client($remoteAddr, $errno, $errstr, 30);
        if(!$this->_socket){
            $this->_errorMessage = $errstr;
            return false;
        }
 
        //设置加密连接,默认是ssl,如果需要tls连接,可以查看php手册stream_socket_enable_crypto函数的解释
        stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
 
        stream_set_blocking($this->_socket, 1); //设置阻塞模式
        $str = fread($this->_socket, 1024);
        if(!strpos($str, "220")){
            $this->_errorMessage = $str;
            return false;
        }
 
        return true;
    }
 
    /**
    * 关闭socket
    * @access private
    * @return boolean
    */
    private function close() {
        if(isset($this->_socket) && is_object($this->_socket)) {
            $this->_socket->close();
            return true;
        }
        $this->_errorMessage = "No resource can to be close";
        return false;
    }
 
    /**
    * 关闭安全socket
    * @access private
    * @return boolean
    */
    private function closeSecutity() {
        if(isset($this->_socket) && is_object($this->_socket)) {
            stream_socket_shutdown($this->_socket, STREAM_SHUT_WR);
            return true;
        }
        $this->_errorMessage = "No resource can to be close";
        return false;
    }
}

调用方法

<?php
require ''Smtp.php'';
$mail = new gclinux\Smtper();

$mail->setDebug(true); 
#$mail->setServer("smtp.exmail.qq.com", "no-reply@milton.com", "password"); //Setting the SMTP server without SSL. 
$mail->setServer("smtp.exmail.qq.com", "no-reply@milton.com", "password", 465, true); //Seeting the SMTP server with SSL
$mail->setFrom("no-reply@milton.com"); // Sender
$mail->setReceiver("milton@milton.com"); // Recipient
$mail->setReceiver("me@milton.cn"); //Append recipient
#$mail->setCc(""); //Set CC
#$mail->setBcc(""); //Append CC

#$mail->addAttachment("file.png"); // Attachment
#$mail->addAttachment("file.csv"); // Append attachment
$mail->setMail("标题只需传递服务器地址", "<b>正文: 只需传递代理服务器地址 测试邮件</b>"); // Titile and content
$mail->send();

在实现代码中, 服务器地址使用了 tcp:// 协议头, 对于确定是使用ssl的服务, 可以使用 ssl:// 协议头.

 

.

CentOS6.5通过mailx使用外部SMTPSSL的方式发送邮件

CentOS6.5通过mailx使用外部SMTPSSL的方式发送邮件

本文基于:CentOS release 6.5 (Final)

注意SMTP使用默认端口25和加密端口465在配置上的区别

安装

yum -y install mailx

配置发送人信息

vim /etc/mail.rc在最后增加:

set from=yourEmailAddress
set smtp=smtpAddress
set smtp-auth-user=yourEmailAddress
set smtp-auth-password=youPassword
set smtp-auth=login

使用三种方式发送邮件

  • 命令行:mail -s "theme" addressee,回车后输入内容按Ctrl+D发送邮件.
  • 管道符:echo "mail main content" | mail -s "theme" addressee
  • 文件内容作为邮件内容:mail -s "theme" addressee < /tmp/t.txt

thme是邮件标题,addressee收件人地址


在搜索CentOS上发送邮件时,大部分都是上面的流程,的确在部分机器是测试成功的,唯独ECS不成功,后来了解到ECS默认关闭25端口。


使用SSL的方式发送邮件

  • 修改/etc/mail.rc增加如下关于SSL的配置
set nss-config-dir=/etc/mail.rc_ssl.crt
    set smtp-user-starttls
    set ssl-verify=ignore
  • 修改 set smtp=smtps://xxxx.xxxx:465
  • /etc/mail.rc_ssl.crt目录下增加Firefox浏览器*.db文件(cert8.db、key3.db、secmod.db)以支持SSL的方式发送邮件

如果你的电脑上装有Firefox,windows可以在%userProfile%\AppData\Roaming\Mozilla\Firefox\Profiles\xxx.default,243);">Linux在~/.mozilla/firefox/xxx.default目录下获取*.db文件,或者直接从这类下载:https://dn-zhangguoli.qbox.me/mail.rc_ssl.crt.zip

  • 发送邮件,注意增加-v参数,否则报错.echo "email main content" | mail -v -s "theme" addressee
转载自:https://zhangguoli.cn/centos-sends-mail-in-the-way-mailx-uses-external-smtp-ssl.html

ecshop实现smtp发送邮件,ecshopsmtp发送邮件_PHP教程

ecshop实现smtp发送邮件,ecshopsmtp发送邮件_PHP教程

ecshop实现smtp发送邮件,ecshopsmtp发送邮件

使用ecshop的smtp方式发送邮件时,在cls_smtp类文件中,执行到get_data方法中的语句:

复制代码 代码如下:

$line    = fgets($this->connection, 512);

;时,发生超时错误。

注释掉该函数的执行,直接发送邮件,则返回错误ehlo command failed。

但打印出链接数据时,确实连上了。

之前用别的程序发送邮件也是可以正常发送的,于是重新发送函数,改用phpmailer发送邮件。

立即学习“PHP免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

复制代码 代码如下:

function smtp_mail($name, $email, $subject, $content, $type = 1, $notification=false) {
     /* 如果邮件编码不是EC_CHARSET,创建字符集转换对象,转换编码 */
    if ($GLOBALS[''_CFG''][''mail_charset''] != EC_CHARSET)
    {
        $name      = ecs_iconv(EC_CHARSET, $GLOBALS[''_CFG''][''mail_charset''], $name);
        $subject   = ecs_iconv(EC_CHARSET, $GLOBALS[''_CFG''][''mail_charset''], $subject);
        $content   = ecs_iconv(EC_CHARSET, $GLOBALS[''_CFG''][''mail_charset''], $content);
        $shop_name = ecs_iconv(EC_CHARSET, $GLOBALS[''_CFG''][''mail_charset''], $GLOBALS[''_CFG''][''shop_name'']);
    }
    $charset   = $GLOBALS[''_CFG''][''mail_charset''];
    include_once ROOT_PATH . ''includes/phpmailer/class.phpmailer.php'';
    $mail = new PHPMailer();
    $mail->From = $GLOBALS[''_CFG''][''smtp_user''];
    $mail->FromName = ''云南***播有限公司'';
    if ($GLOBALS[''_CFG''][''mail_service''] == 0) {
        $mail->isMail();
    } else {
        $mail->IsSMTP();
        $mail->Host = $GLOBALS[''_CFG''][''smtp_host''];
        $mail->Port = $GLOBALS[''_CFG''][''smtp_port''];
        $mail->SMTPAuth = !empty($GLOBALS[''_CFG''][''smtp_pass'']);
        $mail->Username = $GLOBALS[''_CFG''][''smtp_user''];
        $mail->Password = $GLOBALS[''_CFG''][''smtp_pass''];
    }
    $mail->Encoding = "base64";
    //$mail->Priority     = $this->priority;
    $mail->CharSet      = $charset;
    $mail->IsHTML($type);
    $mail->Subject      = $subject;
    $mail->Body         = $content;
    $mail->Timeout      = 30;
    $mail->SMTPDebug    = false;
    $mail->ClearAddresses();
    $mail->AddAddress($email, $name);
    $mail->ConfirmReadingTo = $notification;
    $res = $mail->Send(); 
    if (!$res)
    {
        $GLOBALS[''err'']->add($mail->ErrorInfo);
        $GLOBALS[''err'']->add($GLOBALS[''_LANG''][''sendemail_false'']);
        return false;
    }
    return true;
}

以上就是本文的全部内容了,希望小伙伴们能够喜欢。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/953148.htmlTechArticleecshop实现smtp发送邮件,ecshopsmtp发送邮件 使用ecshop的smtp方式发送邮件时,在cls_smtp类文件中,执行到get_data方法中的语句: 复制代码 代码如...

Go语言通过smtp发送邮件的方法

Go语言通过smtp发送邮件的方法

本文实例讲述了Go语言通过smtp发送邮件的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
package main
import (
 "net/smtp"
 "fmt"
 "strings"
)

/*
 * user : example@example.com login smtp server user
 * password: xxxxx login smtp server password
 * host: smtp.example.com:port   smtp.163.com:25
 * to: example@example.com;example1@163.com;example2@sina.com.cn;...
 *  subject:The subject of mail
 *  body: The content of mail
 *  mailtyoe: mail type html or text
 */


func SendMail(user, password, host, to, subject, body, mailtype string) error{
 hp := strings.Split(host, ":")
 auth := smtp.PlainAuth("", user, password, hp[0])
 var content_type string
 if mailtype == "html" {
  content_type = "Content-Type: text/"+ mailtype + "; charset=UTF-8"
 }else{
  content_type = "Content-Type: text/plain" + "; charset=UTF-8"
 }

 msg := []byte("To: " + to + "\r\nFrom: " + user + "<"+ user +">\r\nSubject: " + subject + "\r\n" + content_type + "\r\n\r\n" + body)
 send_to := strings.Split(to, ";")
 err := smtp.SendMail(host, auth, user, send_to, msg)
 return err
}

func main() {
 user := "xxxx@163.com"
 password := "xxxx"
 host := "smtp.163.com:25"
 to := "xxxx@gmail.com;ssssss@gmail.com"

 subject := "Test send email by golang"

 body := `
 <html>
 <body>
 <h3>
 "Test send email by golang"
 </h3>
 </body>
 </html>
 `
 fmt.Println("send email")
 err := SendMail(user, password, host, to, subject, body, "html")
 if err != nil {
  fmt.Println("send mail error!")
  fmt.Println(err)
 }else{
  fmt.Println("send mail success!")
 }
}

希望本文所述对大家的Go语言程序设计有所帮助。

您可能感兴趣的文章:

Go语言通过smtp发送邮件的示例代码

Go语言通过smtp发送邮件的示例代码

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

package main
import (
    "net/smtp"
    "fmt"
    "strings"
)
 
/*
 *  user : [email protected] login smtp server user
 *  password: xxxxx login smtp server password
 *  host: smtp.example.com:port   smtp.163.com:25
 *  to: [email protected];[email protected];[email protected];...
 *  subject:The subject of mail
 *  body: The content of mail
 *  mailtyoe: mail type html or text
 */
 
 
func SendMail(user,password,host,to,subject,body,mailtype string) error{
    hp := strings.Split(host,":")
    auth := smtp.PlainAuth("",user,hp[0])
    var content_type string
    if mailtype == "html" {
        content_type = "Content-Type: text/"+ mailtype + "; charset=UTF-8"
    }else{
        content_type = "Content-Type: text/plain" + "; charset=UTF-8"
    }
 
    msg := []byte("To: " + to + "\r\nFrom: " + user + "<"+ user +">\r\nSubject: " + subject + "\r\n" + content_type + "\r\n\r\n" + body)
    send_to := strings.Split(to,";")
    err := smtp.SendMail(host,auth,send_to,msg)
    return err
}
 
func main() {
    user := "[email protected]"
    password := "xxxx"
    host := "smtp.163.com:25"
    to := "[email protected];[email protected]"
 
    subject := "Test send email by golang"
 
    body := `
    <html>
    <body>
    <h3>
    "Test send email by golang"
    </h3>
    </body>
    </html>
    `
    fmt.Println("send email")
    err := SendMail(user,"html")
    if err != nil {
        fmt.Println("send mail error!")
        fmt.Println(err)
    }else{
        fmt.Println("send mail success!")
    }
 
}

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

今天关于PHP 通过带SSL的SMTP 发送邮件的处理php smtp类的讲解已经结束,谢谢您的阅读,如果想了解更多关于CentOS6.5通过mailx使用外部SMTPSSL的方式发送邮件、ecshop实现smtp发送邮件,ecshopsmtp发送邮件_PHP教程、Go语言通过smtp发送邮件的方法、Go语言通过smtp发送邮件的示例代码的相关知识,请在本站搜索。

本文标签:

上一篇【Linux】start-stop-daemon

下一篇docker-compose 部署 nginx+php 环境(docker部署nginx和php)