本文介绍了当表单提交时,以PHP格式发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
<?php
session_start();
?>
<!DOCTYPE html PUBLIC - // W3C // DTD XHTML 1.0 Transitional // ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
< html xmlns =http://www.w3.org/1999/xhtml>
< head>
< meta http-equiv =Content-Typecontent =text / html; charset = iso-8859-1/>
< title>注册< / title>
< link href =style.css =stylesheettype =text / css/>
< / head>
< center>< table width =1074height =768border =0cellspacing =5cellpadding =10div style =width:1065; height:* px; background :#FFFFFF;>
< tr>
< td bgcolor =#88bbdd>
< body>
<?php
if(isset($ _ SESSION ['ERRMSG_ARR'])&& is_array($ _ SESSION ['ERRMSG_ARR']&& count($ _ SESSION ['ERRMSG_ARR' ])> 0){
echo'< ul class =err>';
foreach($ _ SESSION ['ERRMSG_ARR'] as $ msg){
echo'< li>',$ msg,'< / li>';
}
echo'< / ul>';
unset($ _ SESSION ['ERRMSG_ARR']);
}
?>
< div align =center>
< table>
< form id =registerFormname =registerFormmethod =postaction =register-exec.php>
< tr>
< td>< div align =left> *名字< td>< input name =fnametype =textclass =textfieldid =fname/> ;< / DIV>
< tr>
< td>< div align =left> *姓氏< td>< input name =lnametype =textclass =textfieldid =lname/> ;< / DIV>
< tr>
< td>< div align =left> *电子邮件地址< td>< input name =logintype =textclass =textfieldid =login/> ;< / DIV>
< tr>
< td>< div align =left> *密码< td>< input name =passwordtype =passwordclass =textfieldid =password/> < / DIV>
< tr>
< td> div align =left> *确认密码< td>< input name =cpasswordtype =passwordclass =textfieldid =cpassword/> ;< / DIV>
< / tr>
< / table>
< br>< br>
< input type =submitname =Submitvalue =Register/>
< / form>
< br>< br> *表示必填字段
< / div>
< / td>
< / tr>
< / table>
< / body>
< / html>
然后表单运行此PHP
<?php
//多个收件人
$ to = $ login;
// subject
$ subject ='Subject';
// message
$ message ='
< html>
< head>
< title>电子邮件< / title>
< / head>
< body>
< p>内容< / p>
< / body>
< / html>
';
//要发送HTML邮件,必须设置Content-type头文件
$ headers ='MIME-Version:1.0'。 \r\\\
;
$ headers。='Content-type:text / html; charset = iso-8859-1'。 \r\\\
;
//附加标头
$ headers。='至:$ fname $ lname。 \r\\\
;
$ headers。='From:email@mydomain.com'。 \r\\\
;
//邮件
mail($ to,$ subject,$ message,$ headers);
?>
<?php
//开始会话
session_start();
//包含数据库连接详细信息
require_once('config.php');
//存储验证错误的数组
$ errmsg_arr = array();
//验证错误标志
$ errflag = false;
//连接到mysql server
$ link = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
if(!$ link){
die('Failed to connect to server:'。mysql_error());
}
//选择数据库
$ db = mysql_select_db(DB_DATABASE);
if(!$ db){
die(Unable to select database);
}
//对从表单接收到的值进行清理的功能。阻止SQL注入
函数clean($ str){
$ str = @trim($ str);
if(get_magic_quotes_gpc()){
$ str = stripslashes($ str);
}
return mysql_real_escape_string($ str);
}
//消除POST值
$ fname = clean($ _ POST ['fname']);
$ lname = clean($ _ POST ['lname']);
$ login = clean($ _ POST ['login']);
$ password = clean($ _ POST ['password']);
$ cpassword = clean($ _ POST ['cpassword']);
//输入验证
如果($ fname ==''){
$ errmsg_arr [] ='名字丢失';
$ errflag = true;
}
if($ lname ==''){
$ errmsg_arr [] ='姓氏丢失';
$ errflag = true;
}
if($ login ==''){
$ errmsg_arr [] ='电子邮件地址丢失';
$ errflag = true;
}
if($ password ==''){
$ errmsg_arr [] ='密码丢失';
$ errflag = true;
}
if($ cpassword ==''){
$ errmsg_arr [] ='确认密码丢失';
$ errflag = true;
}
if(strcmp($ password,$ cpassword)!= 0){
$ errmsg_arr [] ='密码不匹配';
$ errflag = true;
}
//检查重复的登录ID
if($ login!=''){
$ qry =SELECT * FROM members WHERE login =' $登录;
$ result = mysql_query($ qry);
if($ result){
if(mysql_num_rows($ result)> 0){
$ errmsg_arr [] ='登录ID已经在使用'
$ errflag = true;
}
@mysql_free_result($ result);
}
else {
die(Query failed);
}
}
//如果有输入验证,重定向到注册表单
if($ errflag){
$ _SESSION [' ERRMSG_ARR'] = $ errmsg_arr;
session_write_close();
header(location:register-form.php);
exit();
}
//创建INSERT查询
$ qry =INSERT INTO成员(firstname,lastname,login,passwd)VALUES('$ fname','$ lname' '$登录','。MD5($ _ POST [ '密码'])。 ');
$ result = @mysql_query($ qry);
//检查查询是否成功
如果($ result){
header(location:register-success.php);
exit();
} else {
die(Query failed);
}
?>
我想要做的是当有人注册他们收到一封电子邮件说欢迎。这不行,我试图将'to'改为他们在表单中提交的电子邮件地址。
任何有关如何实现的想法?
解决方案
使用gmail作为您的邮件服务器。
require_once('class.phpmailer.php');
include_once('class.smtp.php');
$ mail = new PHPMailer(); //默认使用phpmail()
$ body =< html>< / html>; // html stuff
$ mail-> IsSMTP();
$ mail-> SMTPAuth = true; //启用SMTP验证
$ mail-> SMTPSecure =ssl; //将前缀设置为服务器
$ mail-> Host =smtp.gmail.com; //将GMAIL设置为SMTP服务器
$ mail-> Port = 465; //设置SMTP端口
$ mail->用户名=id@gmail.com; // GMAIL username
$ mail-> Password =password; // GMAIL password
$ mail-> From =id@gmail.com;
$ mail-> FromName =Admin;
$ mail-> Subject =Welcome;
$ mail-> WordWrap = 50; // set word wrap
$ mail-> AddReplyTo(id@gmail.com,Admin);
$ mail-> AddAddress($ email_id); // receiver的id
$ mail-> IsHTML(true); //发送为HTML
$ mail-> AltBody =要查看消息,请使用HTML兼容的电子邮件查看器!;
$ mail-> MsgHTML($ body);
if(!$ mail-> Send()){
$ msg =Mailer错误:$ mail-> ErrorInfo;
header(Location:http:// {$ _SERVER ['HTTP_HOST']} /site/index.php?msg=$msg);
} else {
$ msg =邮件发送成功!;
header(Location:http:// {$ _SERVER ['HTTP_HOST']} /site/index.php?msg=$msg);
}
下载和并保留他们在你的根
编辑:
在register-exec.php中,
$ to = $ _POST ['login'];
$ name = $ _POST ['fname'];
$ password = $ _POST ['password']; //你给你的名字叫做密码你的形式
你可以使用这些变量。 。like
$ body =< div>嗨'$ name。'!< br>你的id: 。$ to。',< br>您的密码:'。$ password。'< / div>;
I have this code for a form
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Register</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<center><table width="1074" height="768" border="0" cellspacing="5" cellpadding="10" div style="width: 1065; height: *px; background:#FFFFFF;">
<tr>
<td bgcolor="#88bbdd">
<body>
<?php
if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
echo '<ul class="err">';
foreach($_SESSION['ERRMSG_ARR'] as $msg) {
echo '<li>',$msg,'</li>';
}
echo '</ul>';
unset($_SESSION['ERRMSG_ARR']);
}
?>
<div align="center">
<table>
<form id="registerForm" name="registerForm" method="post" action="register-exec.php">
<tr>
<td><div align="left">*First Name <td><input name="fname" type="text" class="textfield" id="fname" /></div>
<tr>
<td><div align="left">*Last Name <td><input name="lname" type="text" class="textfield" id="lname" /></div>
<tr>
<td><div align="left">*Email Address <td><input name="login" type="text" class="textfield" id="login" /></div>
<tr>
<td><div align="left">*Password <td><input name="password" type="password" class="textfield" id="password" /></div>
<tr>
<td><div align="left">*Confirm Password <td><input name="cpassword" type="password" class="textfield" id="cpassword" /></div>
</tr>
</table>
<br><br>
<input type="submit" name="Submit" value="Register" />
</form>
<br><br>* Indicates a Required Field
</div>
</td>
</tr>
</table>
</body>
</html>
Then that form runs this PHP
<?php
// multiple recipients
$to = $login;
// subject
$subject = 'Subject';
// message
$message = '
<html>
<head>
<title>Email</title>
</head>
<body>
<p>Content</p>
</body>
</html>
';
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: $fname $lname. "\r\n";
$headers .= 'From: email@mydomain.com' . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
?>
<?php
//Start session
session_start();
//Include database connection details
require_once('config.php');
//Array to store validation errors
$errmsg_arr = array();
//Validation error flag
$errflag = false;
//Connect to mysql server
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}
//Select database
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
die("Unable to select database");
}
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$fname = clean($_POST['fname']);
$lname = clean($_POST['lname']);
$login = clean($_POST['login']);
$password = clean($_POST['password']);
$cpassword = clean($_POST['cpassword']);
//Input Validations
if($fname == '') {
$errmsg_arr[] = 'First name missing';
$errflag = true;
}
if($lname == '') {
$errmsg_arr[] = 'Last name missing';
$errflag = true;
}
if($login == '') {
$errmsg_arr[] = 'Email Address missing';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Password missing';
$errflag = true;
}
if($cpassword == '') {
$errmsg_arr[] = 'Confirm password missing';
$errflag = true;
}
if( strcmp($password, $cpassword) != 0 ) {
$errmsg_arr[] = 'Passwords do not match';
$errflag = true;
}
//Check for duplicate login ID
if($login != '') {
$qry = "SELECT * FROM members WHERE login='$login'";
$result = mysql_query($qry);
if($result) {
if(mysql_num_rows($result) > 0) {
$errmsg_arr[] = 'Login ID already in use';
$errflag = true;
}
@mysql_free_result($result);
}
else {
die("Query failed");
}
}
//If there are input validations, redirect back to the registration form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: register-form.php");
exit();
}
//Create INSERT query
$qry = "INSERT INTO members(firstname, lastname, login, passwd) VALUES('$fname','$lname','$login','".md5($_POST['password'])."')";
$result = @mysql_query($qry);
//Check whether the query was successful or not
if($result) {
header("location: register-success.php");
exit();
}else {
die("Query failed");
}
?>
What I want it to do is when someone registers they get an email saying welcome. This does not work I am trying to change the 'to' to the email address they submitted in the form.
Any ideas on how I can Achieve this?
解决方案
Use gmail as your mail server.
require_once('class.phpmailer.php');
include_once('class.smtp.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = "<html></html>"; //html stuff
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the server
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port
$mail->Username = "id@gmail.com"; // GMAIL username
$mail->Password = "password"; // GMAIL password
$mail->From = "id@gmail.com";
$mail->FromName = "Admin";
$mail->Subject = "Welcome";
$mail->WordWrap = 50; // set word wrap
$mail->AddReplyTo("id@gmail.com","Admin");
$mail->AddAddress($email_id); //receiver's id
$mail->IsHTML(true); // send as HTML
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
if(!$mail->Send()){
$msg = "Mailer Error: ".$mail->ErrorInfo;
header("Location: http://{$_SERVER['HTTP_HOST']}/site/index.php?msg=$msg");
}else{
$msg="Message sent successfully!";
header("Location: http://{$_SERVER['HTTP_HOST']}/site/index.php?msg=$msg");
}
Download class.phpmailer.php and class.smtp.php and keep them in your root
EDIT:
In register-exec.php,
$to = $_POST['login'];
$name = $_POST['fname'];
$password = $_POST['password']; // you've given the name as 'password' in your form
You can use these variables..like
$body = "<div>Hi '.$name.'!<br>Your id:'.$to.',<br>Your Password:'.$password.'</div>";
这篇关于当表单提交时,以PHP格式发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!