網上好多答案都過時了,這里重新記一下
一、使用composer安裝phpmailer
composer require phpmailer/phpmailer
二、在應用公共文件common.php寫個發送郵件的函數(騰訊郵箱的為例),需要注意的是實例化PHPMailer的時候
/** * Notes:發送郵件 * @param string $tomail 接收郵件者郵箱 * @param string $name 接收郵件者名稱 * @param string $subject 郵件主題 * @param string $body 郵件內容 * @param string $attachment 附件列表 * @return boolean * @throws phpmailerException */ function send_mail($tomail, $name, $subject = '', $body = '', $attachment = null) { $mail = new PHPMailer\PHPMailer\PHPMailer(); //實例化PHPMailer對象 $mail->CharSet = 'UTF-8'; //設定郵件編碼,默認ISO-8859-1,如果發中文此項必須設置,否則亂碼 $mail->IsSMTP(); // 設定使用SMTP服務 $mail->SMTPDebug = 0; // SMTP調試功能 0=關閉 1 = 錯誤和消息 2 = 消息 $mail->SMTPAuth = true; // 啟用 SMTP 驗證功能 $mail->SMTPSecure = 'ssl'; // 使用安全協議 $mail->Host = "smtp.qq.com"; // SMTP 服務器 $mail->Port = 465; // SMTP服務器的端口號 $mail->Username = "XXXXX@qq.com"; // SMTP服務器用戶名 $mail->Password = "XXXXX"; // SMTP服務器密碼,這里是你開啟SMTP服務時生成密碼 $mail->SetFrom('XXXXX@qq.com', '發件人昵稱'); $replyEmail = ''; //留空則為發件人EMAIL $replyName = ''; //回復名稱(留空則為發件人名稱) $mail->AddReplyTo($replyEmail, $replyName); $mail->Subject = $subject; $mail->MsgHTML($body); $mail->AddAddress($tomail, $name); if (is_array($attachment)) { // 添加附件 foreach ($attachment as $file) { is_file($file) && $mail->AddAttachment($file); } } return $mail->Send() ? true : $mail->ErrorInfo; }
三,在控制器中調用
public function send_email() { $toemail='1055499770@qq.com';//收件人郵箱 $name='親愛的Pedro,您好!';//接收郵件者名稱 $subject='QQ郵件發送測試';//郵件主題 $content='恭喜你,郵件測試成功。';//郵件內容 //調用方法發送郵件 dump(send_mail($toemail,$name,$subject,$content)); }
四、測試