自己Mac上面测试完全OK,但是放到Linux的服务器上就报了Could not instantiate mail function.
配置项:
Connect函数
配置项:
- // 配置邮件发送服务器
- 'THINK_EMAIL' => array(
- 'SMTP_HOST' => 'smtp.163.com', //SMTP服务器
- 'SMTP_PORT' => '25', //SMTP服务器端口
- 'SMTP_USER' => '***@163.com', //SMTP服务器用户名
- 'SMTP_PASS' => '****', //SMTP服务器密码
- 'FROM_EMAIL' => '***@163.com', //发件人EMAIL
- 'FROM_NAME' => 'XXX', //发件人名称
- 'REPLY_EMAIL' => '', //回复EMAIL(留空则为发件人EMAIL)
- 'REPLY_NAME' => '', //回复名称(留空则为发件人名称)
- ),
复制代码
实现函数:
- function think_send_mail($to, $name, $subject = '', $body = '', $attachment = null){
- $config = C('THINK_EMAIL');
- vendor('PHPMailer.class#phpmailer'); //从PHPMailer目录导class.phpmailer.php类文件
- $mail = new PHPMailer(); //PHPMailer对象
- $mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
- $mail->IsSMTP(); // 设定使用SMTP服务
- $mail->SMTPDebug = 0; // 关闭SMTP调试功能
- // 1 = errors and messages
- // 2 = messages only
- $mail->SMTPAuth = true; // 启用 SMTP 验证功能
- $mail->SMTPSecure = 'ssl'; // 使用安全协议
- $mail->Host = $config['SMTP_HOST']; // SMTP 服务器
- $mail->Port = $config['SMTP_PORT']; // SMTP服务器的端口号
- $mail->Username = $config['SMTP_USER']; // SMTP服务器用户名
- $mail->Password = $config['SMTP_PASS']; // SMTP服务器密码
- $mail->SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);
- $replyEmail = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];
- $replyName = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];
- $mail->AddReplyTo($replyEmail, $replyName);
- $mail->Subject = $subject;
- $mail->MsgHTML($body);
- $mail->AddAddress($to, $name);
- if(is_array($attachment)){ // 添加附件
- foreach ($attachment as $file){
- is_file($file) && $mail->AddAttachment($file);
- }
- }
- return $mail->Send() ? true : $mail->ErrorInfo;
- }
复制代码
class.phpmailer.php改动的地方:
- public function IsSMTP() {
- $this->Mailer = 'SMTP';
- //$this->Mailer = 'smtp';
- }
复制代码
class.smtp.php改动的地方:
Connect函数
- $this->smtp_conn = @pfsockopen($host, // the host of the server
复制代码
求各位大神解答