🗣 Wd提问: 程序PHP邮件发送
🤖 Ai回答: 在 PHP 中发送邮件可以通过多种方式实现,以下是常见的方法和注意事项:
一、基础邮件发送(使用 `mail()` 函数)
php
// 基本用法
$mail_to = 收件人邮箱地址;
$mail_subject = 邮件主题;
$mail_content = 邮件正文内容;
if (mail($mail_to, $mail_subject, $mail_content)) {
echo 邮件发送成功!;
} else {
echo 邮件发送失败!;
}
高级用法(添加邮件头)
php
// 设置发件人信息
$headers = From: 发件人名称 <your-email@65.hk\r\n;
$headers .= Reply-To: 回复邮箱 <reply-email@65.hk\r\n;
$headers .= Content-Type: text/plain; charset=utf-8\r\n; // 支持中文
if (mail($mail_to, $mail_subject, $mail_content, $headers)) {
echo 邮件发送成功!;
} else {
echo 邮件发送失败!;
}
二、发送 HTML 格式邮件
php
$mail_to = 收件人邮箱地址;
$mail_subject = HTML 邮件示例;
$mail_content = <h1这是标题</h1<p这是段落内容。</p;
// 设置 Content-Type 为 HTML
$headers = MIME-Version: 1.0\r\n;
$headers .= Content-Type: text/html; charset=utf-8\r\n;
if (mail($mail_to, $mail_subject, $mail_content, $headers)) {
echo HTML 邮件发送成功!;
} else {
echo HTML 邮件发送失败!;
}
三、发送带附件的邮件
PHP 原生 `mail()` 函数不直接支持附件,需手动编码:
php
// 附件路径
$attachment = /path/to/attachment.txt;
// 读取附件内容
$file = fopen($attachment, rb);
$data = fread($file, filesize($attachment));
fclose($file);
$encoded_file = chunk_split(base64_encode($data));
// 构建邮件头和内容
$mail_to = 收件人邮箱地址;
$mail_subject = 带附件的邮件;
$mail_content = 请查看附件。\n\n \n结尾签名;
$headers = From: 发件人 <your-email@65.hk\r\n;
$headers .= Content-Type: multipart/mixed; boundary=\PHP-mixed-.md5(time()).\\r\n;
$headers .= PHP-mixed-.md5(time()).\r\n;
$headers .= Content-Type: text/plain; charset=utf-8\r\n;
$headers .= Content-Transfer-Encoding: 8bit\r\n\r\n;
$headers .= $mail_content.\r\n\r\n;
$headers .= PHP-mixed-.md5(time()).\r\n;
$headers .= Content-Type: application/octet-stream; name=\.basename($attachment).\\r\n;
$headers .= Content-Transfer-Encoding: base64\r\n;
$headers .= Content-Disposition: attachment; filename=\.basename($attachment).\\r\n\r\n;
$headers .= $encoded_file.\r\n\r\n;
$headers .= PHP-mixed-.md5(time()).;
if (mail($mail_to, $mail_subject, , $headers)) {
echo 带附件的邮件发送成功!;
} else {
echo 带附件的邮件发送失败!;
}
四、推荐使用 PHPMailer 库(更易用且功能强大)
1、安装 PHPMailer:
bash
composer require phpmailer/phpmailer
2、使用示例:
php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
try {
$mail = new PHPMailer(true);
$mail-CharSet = 'UTF-8'; // 支持中文
$mail-isSMTP();
$mail-Host = 'smtp.65.hk'; // SMTP服务器
$mail-SMTPAuth = true;
$mail-Username = 'your-email@65.hk';
$mail-Password = 'your-password';
$mail-SMTPSecure = 'tls'; // 或 ssl
$mail-Port = 587; // 或 465
$mail-setFrom('your-email@65.hk', '发件人名称');
$mail-addAddress('recipient@65.hk', '收件人名称');
$mail-addCC('cc@65.hk'); // 抄送
$mail-addBCC('bcc@65.hk'); // 密送
$mail-isHTML(true);
$mail-Subject = 'PHPMailer 测试邮件';
$mail-Body = '<h1你好!</h1<p这是一封测试邮件。</p';
$mail-AltBody = '这是一封测试邮件。';
$mail-send();
echo '邮件已成功发送!';
} catch (Exception $e) {
echo 邮件发送失败: {$mail-ErrorInfo};
}
五、常见问题解决
1、邮件发送失败:
检查服务器是否开启 SMTP 服务(如本地开发可配置 XAMPP 的 sendmail)。
确保邮箱服务器允许 SMTP 登录(如 Gmail 需开启「允许不够安全的应用」)。
检查防火墙或安全软件是否拦截。
2、邮件被标记为垃圾:
确认发件人域名已通过 SPF/DKIM 认证。
避免使用敏感词汇(如“免费”、“立即购买”)。
3、中文乱码:
在邮件头中指定 `charset=utf-8`。
确保文件编码为 UTF-8(如保存为 `.php` 文件时选择 UTF-8 编码)。
六、在线测试工具
[Mailtrap](https://mailtrap.io/):模拟接收邮件,方便调试。
[SendGrid](https://sendgrid.com/):提供免费 SMTP 服务(适合测试)。
根据实际需求选择合适的方法,推荐优先使用 PHPMailer 库以获得更好的兼容性和扩展性。
📣 商家广告:





0
IP地址: 91.211.21.238
搜索次数: 0
提问时间: 2025-11-05 22:57:56
🛒 域名购买:
815.net.cn
zqll.cn
05.gold
toutian.com.cn
zhanwai.cn
yrnz.cn
5.he.cn
875.net.cn
40.gold
pf.gs
❓️ 热门提问:
国外便宜云服务器
云计算的功能
学云计算的培训班
日本低延迟vps
租用服务器训练yolo
公司网站托管
技术博客写作
dns网络服务器地址是多少
云南云机
带人民币过香港
豌豆Ai站群搜索引擎系统
🌐 域名评估:
vv.ln.cn
vision2200.org.cn
f.nx.cn
catl.ac.cn
rbqx.cn
f.xz.cn
xjxi.cn
allonedu.cn
bing.com
37.com.hk
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
北京网站排名
北京网站定制
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。