【问题标题】:Send mail via a contact form using phpmailer使用 phpmailer 通过联系表格发送邮件
【发布时间】:2015-11-18 12:14:29
【问题描述】:

正如我在标题中提到的,我想使用 phpmailer 将带有联系表格的邮件发送到 gmail。我已经为我的联系表格编写了代码,下面给出了 sendmail php 文件。

我在 $mail-> Port=465; 行中的 sendemail.php 文件中遇到错误;

contact.html

<script type="text/javascript" src="jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(function(){

$('input[type=submit]').click(function(){

$.ajax({
    url: "sendemail.php",
    type: 'POST',
    data: $("#myForm").serialize(),
    success: function(data){
       $('#result').html(data);
    }
});

});

});
</script>

    <form action="" method="post" onsubmit="return false;" id ="myForm">
          <input type="text" class="form-control" required="required" name="guest_name" placeholder="Name">
          <input type="text" class="form-control" required="required" name="guest_mail" placeholder="Email address">
          <input type="text" class="form-control" required="required" name="guest_cont" placeholder="Contact No.">
          <input type="text" class="form-control" required="required" name="guest_comp" placeholder="Company Name">
          <textarea name="guest_msg" id="message" required="required" class="form-control" rows="8" placeholder="Enquery or Feedback"></textarea>
          <input type="submit" name="submit" value="Submit" class="btn btn-danger btn-lg">
     </form>

还有 sendemail.php

<?php


    $subject = "Query/Feedback"; 
    $name = $_POST['guest_name']; 
    $email = $_POST['guest_mail']; 
    $contact = $_POST['guest_cont']; 
    $company = $_POST['guest_comp'];
    $message = $_POST['guest_msg']; 

    $email_from = $email;
    $email_to = 'rexxxxxxxxxxxxd@gmail.com';

    if($sender== '' || $mail_id== '' || $cont_no== '' || $company== '' || $msg_txt== ''){
        echo "check the fields";
    }else{

    $subject='Query from '.$sender;
    $message='Dear Sir,<br><br>'.$msg_txt.'<br><br>From: '.$sender.'<br>Contact: '.$cont_no.'<br>Company Name: '.$company;

    require "phpmailer/class.phpmailer.php";  //including the phpmailer file

    //Installing Class
    $mail = new PHPMailer();

    // Set up SMTP
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "ssl";
    $mail->Host = "smtp.gmail.com;"
    $mail->Port = 465;
    $mail->Encoding = '7bit';

    // Authentication
    $mail->Username = "mymailid@gmail.com"
    $mail->Password = "mypassword"

    // Compose
    $mail->SetFrom($_POST['guest_mail'], $_POST['guest_name']);
    $mail->AddReplyTo($_POST['guest_mail'], $_POST['guest_name']);
    $mail->Subject = "/new Contact From Enquery"
    $mail->MsgHTML($guest_msg);

    // Send To
    $mail->AddAddress($email_to, "Banti");
    $result = $mail->Send();
    if($result)
        {
        echo "Thank you for your Feedback";
    }

    }


?>

【问题讨论】:

  • 那个端口在服务器上打开了吗?
  • 您将让某人向您的目标电子邮件地址发送垃圾邮件致死。什么可以阻止某人编写脚本来不断调用您的 ajax 调用?巨大的 DoS 攻击漏洞。
  • 与其重新发明轮子并像你一样承受后果,不如从已知良好的代码开始,比如the gmail example provided with PHPMailer

标签: php ajax phpmailer


【解决方案1】:

由于我的代表率低,我还不能发表评论,所以也许我误解了这个问题。但是,如果“我在设置端口时出错”,您的意思是您的 PHP 脚本运行但未发送电子邮件,问题可能是gmail需要:

$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;

我也将 PHPMailer 与 gmail 一起使用。

编辑

您缺少一些“;” :

$mail->Host = "smtp.gmail.com;" // you have this
$mail->Host = "smtp.gmail.com"; // you need this
$mail->Username = "mymailid@gmail.com"; // add this
$mail->Password = "mypassword"; // add this

【讨论】:

  • 此错误显示:解析错误:语法错误,第 31 行 /home/fitweznz/public_html/sendemail1.php 中的意外 '$mail' (T_VARIABLE)
  • 是的,我试过它的结果是一样的
  • 您缺少分号“;”也在身份验证部分。尝试添加一个 ;在“mymailid@gmail.com”之后和“mypassword”之后
  • mmh.. 实际上只是一个很好的观察者哈哈.. 如果我有帮助,请将我的帖子标记为答案。
猜你喜欢
  • 1970-01-01
  • 2014-03-27
  • 2015-07-12
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多