PHP邮件副本通常指的是通过PHP脚本发送的电子邮件,这些邮件可以是用户注册确认、密码重置通知、促销活动等。邮件副本的核心在于能够复制一份邮件的内容并发送给多个收件人,这在批量发送通知或营销邮件时非常有用。
以下是一个简单的PHP邮件发送示例,使用SMTP协议通过QQ邮箱发送邮件:
<?php
// 邮件配置
$to = 'recipient@example.com'; // 收件人地址
$subject = '邮件主题'; // 邮件主题
$message = '邮件正文内容'; // 邮件正文
$from = 'sender@qq.com'; // 发件人地址
$headers = 'From: ' . $from . "\r\n" . // 发件人地址
'Reply-To: ' . $from . "\r\n" . // 回复地址
'X-Mailer: PHP/' . phpversion(); // 邮件发送程序及版本信息
// SMTP服务器配置
$smtp_host = 'smtp.qq.com'; // SMTP服务器地址
$smtp_port = 587; // SMTP服务器端口
$smtp_username = 'sender@qq.com'; // SMTP用户名
$smtp_password = 'your_smtp_password'; // SMTP密码
// 创建邮件发送函数
function send_mail($to, $subject, $message, $headers, $smtp_host, $smtp_port, $smtp_username, $smtp_password) {
// 连接SMTP服务器
$smtp_conn = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30);
if (!$smtp_conn) {
echo "无法连接SMTP服务器: $errstr ($errno)";
return false;
}
// 获取SMTP服务器响应
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 220) {
echo "SMTP服务器响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 发送HELO命令
fputs($smtp_conn, "HELO " . gethostname() . "\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 250) {
echo "HELO命令响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 启动TLS加密
fputs($smtp_conn, "STARTTLS\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 220) {
echo "STARTTLS命令响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 重新连接SMTP服务器(TLS加密后)
stream_socket_enable_crypto($smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 250) {
echo "TLS加密后连接响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 发送用户名和密码
fputs($smtp_conn, "AUTH LOGIN\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 334) {
echo "AUTH LOGIN命令响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
fputs($smtp_conn, base64_encode($smtp_username) . "\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 334) {
echo "用户名响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
fputs($smtp_conn, base64_encode($smtp_password) . "\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 235) {
echo "密码响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 设置发件人地址
fputs($smtp_conn, "MAIL FROM: <" . $from . ">\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 250) {
echo "MAIL FROM命令响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 设置收件人地址
fputs($smtp_conn, "RCPT TO: <" . $to . ">\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 250) {
echo "RCPT TO命令响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 发送邮件数据
fputs($smtp_conn, "DATA\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 354) {
echo "DATA命令响应错误: $smtp_response";
fclose($smtp_conn);
return false;
}
fputs($smtp_conn, $headers . "\r\n" . $message . "\r\n.\r\n");
$smtp_response = fgets($smtp_conn, 1024);
if (substr($smtp_response, 0, 3) != 250) {
echo "邮件数据发送错误: $smtp_response";
fclose($smtp_conn);
return false;
}
// 关闭SMTP连接
fclose($smtp_conn);
return true;
}
// 发送邮件
if (send_mail($to, $subject, $message, $headers, $smtp_host, $smtp_port, $smtp_username, $smtp_password)) {
echo "邮件发送成功!";
} else {
echo "邮件发送失败!";
}
?>
注意:在实际应用中,请确保遵守相关法律法规和邮件服务提供商的使用条款,避免滥用邮件发送功能。
领取专属 10元无门槛券
手把手带您无忧上云