幸福

如人饮水,冷暖自知

ThinkPHP实现邮件发送

完整的TP邮件发送类:
<?php
phpnamespace Org\Net;
/** 
 * 邮件发送类 
 * 支持发送纯文本邮件和HTML格式的邮件,可以多收件人,多抄送,多秘密抄送,带附件的邮件 
 * 需要的php扩展,sockets和Fileinfo。 
 * @example * $mail = new MySendMail(); 
 * $mail->setServer("XXXXX", "XXXXX@XXXXX", "XXXXX"); 设置smtp服务器 
 * $mail->setFrom("XXXXX"); 设置发件人 
 * $mail->setReceiver("XXXXX"); 设置收件人,多个收件人,调用多次 
 * $mail->setCc("XXXX"); 设置抄送,多个抄送,调用多次 
 * $mail->setBcc("XXXXX"); 设置秘密抄送,多个秘密抄送,调用多次 
 * $mail->setMailInfo("test", "<b>test</b>"); 设置邮件主题、内容 
 * $mail->sendMail(); 发送 
 */

class MySendMail
{
    private $_userName;
    private $_password;
    protected $_sendServer;
    protected $_port = 25;
    protected $_from;
    protected $_to;
    protected $_cc;
    protected $_bcc;
    protected $_subject;
    protected $_body;
    protected $_attachment;
    protected $_socket;
    protected $_errorMessage;

    /**     
     * 设置邮件传输代理,如果是可以匿名发送有邮件的服务器,只需传递代理服务器地址就行     
     * @access public     * @param string $server 代理服务器的ip或者域名     
     * @param string $username 认证账号     
     * @param string $password 认证密码     
     * @param int $port 代理服务器的端口,smtp默认25号端口     
     * @return boolean 
     */
    public function setServer($server, $username = "", $password = "", $port = 25)
    {
        $this->_sendServer = $server;
        $this->_port = $port;
        if (!empty($username)) {
            $this->_userName = base64_encode($username);
        }
        if (!empty($password)) {
            $this->_password = base64_encode($password);
        }
        return true;
    }


代码示例:
function sendMail()
{
    $mail = new  \Org\Net\MySendMail();
    $mail->setServer('smtp.163.com', 'test@163.com', 'mima');
    $mail->setFrom("test@163.com");
    $mail->setReceiver("12345678@qq.com");
    $mail->setCc("23456789@qq.com");
    $mail->setMailInfo("邮件测试标题", "邮件内容");
    $mail->sendMail();
}

有可能会出现如下错误:

:(        Call to undefined functionOrg\Net\socket_write()

解決方法:

找到php.ini配置文件第984行,开启socket模块





去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注