昨天就想着给博客加个“给我发邮件板块”用以访客快速简单联系站长于是今天开始做
PHP 从脚本直接发送电子邮件。
方法一:使用PHP mail() 函数
PHP mail() 函数用于从脚本中发送电子邮件。 语法 mail(to,subject,message,headers,parameters) 参数 描述
- to 必需。规定 email 接收者。
- subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
- message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。
- headers 可选。规定附加的标题,比如 From、Cc 以及 Bcc。应当使用 CRLF (\r\n) 分隔附加的标题。
- parameters 可选。对邮件发送程序规定额外的参数。
- 首先在服务器端配置好sendmail,打开sendmail配置文件修改sendmail.ini smtp_server=smtp.qq.com smtp_port=465 auth_username=test@qq.com auth_password=123456 force_sender=test@qq.com
- sendmail可以使用phpstudy中带的,以上服务器端配置好。
新建表单:
<h2>给我发邮件</h2>
<form action="sendmail.php" method="post">
你的名字: <input type="text" name="name" placeholder="请输入你的名字"><br>
你的E-mail: <input type="text" name="email" placeholder="请输入你的E-mail"><br>
邮件标题: <input type="text" name="title" placeholder="请输入邮件标题"><br>
邮件内容: <input type="text" name="message" placeholder="请输入邮件内容"><br>
<input type="submit">
</form>
新建文件sendmail.php
<?php
$to = "admin@eyunzhu.com";//站长邮箱
$subject = $_POST["name"]. " :".$_POST["title"];
$message = "发件人: " .$_POST["name"]. " ".$_POST["email"]." " . "\r\n"."邮件内容: " .$_POST["message"]."\r\n\nFrom:李庆华个人博客,邮件板块";
$headers .= 'From: <admin@eyunzhu.com>' . "\r\n";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
此时运行大功告成!
更新:
方法二:使用PHPMailer
PHPMailer是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务
使用方法:
- 使用composer下载PHPMailer 常用composer依赖包
- 项目中加载引用
- 开始使用(如下示例)
#composer
composer require phpmailer/phpmailer
使用示例
function cmf_send_email($address, $subject, $message,$smtpSetting)
{
$mail = new \PHPMailer\PHPMailer\PHPMailer();
// 设置PHPMailer使用SMTP服务器发送Email
$mail->IsSMTP();
$mail->IsHTML(true);
//$mail->SMTPDebug = 3;
// 设置邮件的字符编码,若不指定,则为'UTF-8'
$mail->CharSet = 'UTF-8';
// 添加收件人地址,可以多次使用来添加多个收件人
$mail->AddAddress($address);
// 设置邮件正文
$mail->Body = $message;
// 设置邮件头的From字段。
$mail->From = $smtpSetting['from'];
// 设置发件人名字
$mail->FromName = $smtpSetting['from_name'];
// 设置邮件标题
$mail->Subject = $subject;
// 设置SMTP服务器。
$mail->Host = $smtpSetting['host'];
//by Rainfer
// 设置SMTPSecure。
$Secure = $smtpSetting['smtp_secure'];
$mail->SMTPSecure = empty($Secure) ? '' : $Secure;
// 设置SMTP服务器端口。
$port = $smtpSetting['port'];
$mail->Port = empty($port) ? "25" : $port;
// 设置为"需要验证"
$mail->SMTPAuth = true;
$mail->SMTPAutoTLS = false;
$mail->Timeout = 10;
// 设置用户名和密码。
$mail->Username = $smtpSetting['username'];
$mail->Password = $smtpSetting['password'];
// 发送邮件。
if (!$mail->Send()) {
$mailError = $mail->ErrorInfo;
return ["error" => 1, "message" => $mailError];
} else {
return ["error" => 0, "message" => "success"];
}
}
目前评论:0