php实现表单发邮件 发邮件给站长

昨天就想着给博客加个“给我发邮件板块”用以访客快速简单联系站长于是今天开始做

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 
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"];
    }
}
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: