本文介绍了当表单提交时,以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格式发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-07 02:40