phpMailer中的附件
发布时间:2020-12-13 16:05:47 所属栏目:PHP教程 来源:网络整理
导读:我似乎无法弄清楚如下: 如何使附加文件只是一个特定文件(例如:仅 可附加.jpg文件). 限制文件大小 发送文件后,它将从服务器中删除 div class="white-jumbotron" div class="container"form action="" method="post" enctype="multipart/form-data"div class
我似乎无法弄清楚如下:
>如何使附加文件只是一个特定文件(例如:仅 <div class="white-jumbotron"> <div class="container"> <form action="" method="post" enctype="multipart/form-data"> <div class="form-group"> <label for="name" class="col-sm-2 control-label">First Name</label> <div class="col-sm-10"> <input class="form-control" type="text" name="firstName" id="firstName" required /> <p class='text-danger'></p> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">Last Name</label> <div class="col-sm-10"> <input class="form-control" type="text" name="lastName" id="lastName" required /> <p class='text-danger'></p> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">Email</label> <div class="col-sm-10"> <input class="form-control" type="text" name="email" id="email" required /> <p class='text-danger'></p> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">Resume upload</label> <div class="col-sm-10"> <input type="file" name="uploaded_file" id="uploaded_file"> <br /> </div> </div> <div class="col-sm-10"> <input type="submit" name="submit" class="btn btn-green" /> </div> </form> <?php if(isset($_POST['submit'])) { $emailAddress = 'myemail@gmail.com'; require "class.phpmailer.php"; $msg = 'First Name:'.$_POST['firstName'].'<br /> Last name:'.$_POST['lastName'].'<br /> Email:'.$_POST['email'].'<br />'; move_uploaded_file($_FILES["uploaded_file"]["tmp_name"],$_FILES["uploaded_file"]["name"]); $mail = new PHPMailer(); $mail->IsMail(); $mail->AddReplyTo($_POST['email'],$_POST['name']); $mail->AddAddress($emailAddress); $mail->SetFrom($_POST['email'],$_POST['name']); $mail->Subject = "Subject"; $mail->MsgHTML($msg); $mail->AddAttachment( $_FILES["uploaded_file"]["name"]); $mail->Send(); echo'<script> window.location="../careers-sent.php"; </script> '; } ?> </div> </div> 解决方法
首先,将视图(< div ...)和处理(<?php ...)拆分为两个不同的文件,以避免在用户按下F5时再次发送邮件. 1)在处理中,在文件名上加上条件
if (preg_match("/.jpg$/",$_FILES["uploaded_file"]["name"])) { //OK } else { //KO,redirect to error page } 2)不能在这里测试,但我想也可以有一个文件的“大小”属性 3)检查发送 if ($mail->send()) { unlink($_FILES["uploaded_file"]["name"]); } else { //KO,log to debug file } 编辑:代码集成 view.php(方便地重命名) <div class="white-jumbotron"> <div class="container"> <form action="" method="post" action="val_mail.php" enctype="multipart/form-data"> <div class="form-group"> <label for="name" class="col-sm-2 control-label">First Name</label> <div class="col-sm-10"> <input class="form-control" type="text" name="firstName" id="firstName" required /> <p class='text-danger'></p> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">Last Name</label> <div class="col-sm-10"> <input class="form-control" type="text" name="lastName" id="lastName" required /> <p class='text-danger'></p> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">Email</label> <div class="col-sm-10"> <input class="form-control" type="text" name="email" id="email" required /> <p class='text-danger'></p> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">Resume upload</label> <div class="col-sm-10"> <input type="file" name="uploaded_file" id="uploaded_file"> <br /> </div> </div> <div class="col-sm-10"> <input type="submit" name="submit" class="btn btn-green" /> </div> </form> val_mail.php(方便地重命名但与表单的上述action属性匹配) <?php if(isset($_POST['submit'])) { if (!preg_match("/.jpg$/",$_FILES["uploaded_file"]["name"])) { echo'<script> window.location="../error-attachment.php"; </script> '; exit;// create error page } $emailAddress = 'myemail@gmail.com'; require "class.phpmailer.php"; $msg = 'First Name:'.$_POST['firstName'].'<br /> Last name:'.$_POST['lastName'].'<br /> Email:'.$_POST['email'].'<br />'; move_uploaded_file($_FILES["uploaded_file"]["tmp_name"],$_POST['name']); $mail->Subject = "Subject"; $mail->MsgHTML($msg); $mail->AddAttachment( $_FILES["uploaded_file"]["name"]); if ($mail->Send()) { unlink($_FILES["uploaded_file"]["name"]); } else { echo'<script> window.location="../error-sent.php"; </script> '; exit;// create error page } echo'<script> window.location="../careers-sent.php"; </script> '; } ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |