PHP实现用户发布职位时发送含$job_title变量的HTML邮件
实现职位发布后的自动HTML邮件通知(PHP+PHPMailer)
我来帮你完善这个PHPMailer函数,让它能在用户发布职位后自动发送包含职位名称的HTML邮件。下面是完整的可运行代码,关键细节我都标注好了:
require('phpmailer/PHPMailer.php'); require('phpmailer/Exception.php'); require('phpmailer/SMTP.php'); require('phpmailer/POP3.php'); require('phpmailer/OAuth.php'); function sendJobPostedEmail($to, $job_title) { try { $mail = new PHPMailer\PHPMailer\PHPMailer(true); // 启用异常处理,方便捕获发送错误 // 1. 配置SMTP服务器信息(替换成你自己的邮箱服务商配置) $mail->isSMTP(); $mail->Host = 'smtp.example.com'; // 比如Gmail用smtp.gmail.com,QQ邮箱用smtp.qq.com $mail->SMTPAuth = true; $mail->Username = 'your-sender-email@example.com'; // 发件人邮箱账号 $mail->Password = 'your-email-password-or-app-code'; // 邮箱密码/应用专用密码(两步验证时用后者) $mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS; // 加密方式,一般选TLS $mail->Port = 587; // TLS对应端口587,SSL对应465 // 2. 设置发件人和收件人 $mail->setFrom('your-sender-email@example.com', '你的应用名称'); $mail->addAddress($to); // 接收通知的用户邮箱 // 3. 构建带职位名称的HTML邮件内容 $mail->isHTML(true); $mail->Subject = '职位发布成功通知'; $mail->Body = " <html> <body style='font-family: Arial, sans-serif; max-width: 600px; margin: 20px auto; padding: 20px; border: 1px solid #eee; border-radius: 8px;'> <h2 style='color: #2d3748;'>🎉 你的职位发布成功啦!</h2> <p>你刚刚发布的职位:<strong style='color: #2b6cb0;'>{$job_title}</strong> 已经正式上线。</p> <p>后续可以在应用后台查看职位的投递情况,如有疑问随时联系我们的客服团队。</p> <hr style='border-top: 1px solid #eee; margin: 20px 0;'> <p style='font-size: 12px; color: #718096;'>这是系统自动发送的邮件,请勿直接回复。</p> </body> </html> "; $mail->AltBody = "你的职位【{$job_title}】已成功发布上线,可在后台查看投递情况,如有问题请联系客服。"; // 纯文本备用内容,适配不支持HTML的邮箱 // 4. 发送邮件 $mail->send(); return true; // 发送成功返回true } catch (Exception $e) { // 捕获错误,可记录到日志方便排查 error_log("邮件发送失败: {$mail->ErrorInfo}"); return false; } }
关键细节说明:
- SMTP配置:一定要替换成你实际使用的邮箱服务商信息,比如用Gmail的话,需要先开启SMTP服务,开启两步验证的话要使用应用专用密码。
- 职位名称嵌入:我把
$job_title变量放在了<strong>标签里,用蓝色高亮突出,让邮件内容更醒目。 - 异常处理:用
try-catch包裹整个流程,发送失败时会记录错误日志,方便你定位问题。 - 兼容性:设置了纯文本的
AltBody,确保即使收件人邮箱不支持HTML,也能收到清晰的通知。
你只需要在用户发布职位成功的逻辑里调用这个函数即可,比如:
// 假设用户发布职位后拿到的收件邮箱和职位名 $userEmail = 'user@example.com'; $postedJob = '资深前端开发工程师'; sendJobPostedEmail($userEmail, $postedJob);
内容的提问来源于stack exchange,提问作者Adam G
相关产品推荐
相关产品推荐

