【问题标题】:sending an email using PHPMailer-5.2 from my gmail account not working on live server使用 PHPMailer-5.2 从我的 gmail 帐户发送电子邮件,但无法在实时服务器上运行
【发布时间】:2020-08-08 14:34:51
【问题描述】:

如果看到有人问同样的问题,但缅因州有点不同。

我有一个联系我的表格,我收到了所有发件人信息,如姓名、电子邮件、主题和消息,我使用 PHPMailer-5.2 从我的电子邮件地址将这些信息发送到我的电子邮件地址。 我提交表单而不使用 js 刷新页面,它在本地主机上运行良好,但在实时服务器上运行良好。 我不知道为什么我需要帮助?

这里是代码

联系表格

<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
function chk()
{
    var name = document.getElementById("name").value;
    var email = document.getElementById("email").value;
    var subject = document.getElementById("subject").value;
    var message = document.getElementById("message").value;
    if(name && email && subject && message) {
        $.ajax({
            type: "post",
            url: "sendmail.php",
            data: {
                     user_name:name,
                     user_email:email,
                     user_subject:subject,
                     user_message:message
            },
            success: function (response) {
                document.getElementById("status").innerHTML="Message sent successfully. I will reply as soon as possible!";;
  
            }
        });
    }
    return false;
}
</script>
</head>
<body>    
<form>
    <p>
        <label> Your Name (required)<br />
        <input id="name" required="" type="text" /><br />
        </label>
    </p>
    <p>
        <label> Your Email (required)<br />
        <input id="email" required="" type="email" /><br />
        </label>
    </p>
    <p>
        <label> Subject (required)<br />
        <input id="subject" required="" type="text" /><br />
        </label>
    </p>
    <p>
        <label> Your Message (required)<br />
        <textarea cols="40" id="message" required="" rows="10"></textarea><br />
        </label>
    </p>
    <p>
        <input type="submit" value="Send" onclick="return chk()">
    </p>
</form>

<p id="status"></p>
</body>
</html>

发送邮件.php

<?php

require_once('PHPMailer-5.2-stable/PHPMailerAutoload.php');

if(isset($_POST['user_name']) && isset($_POST['user_email']) && isset($_POST['user_message']))
{
    $name=$_POST['user_name'];
    $email=$_POST['user_email'];
    $subject=$_POST['user_subject'];
    $message=$_POST['user_message'];

    $email1="dagm*****@gmail.com";

    $message1 = "Name : ".$name."<br>"."Email : ".$email."<br>"."Subject : ".$subject."<br>".$message;

    $mail = new PHPMailer();
    $mail->isSMTP();
    $mail->SMTPAuth =true;
    $mail->SMTPSecure = 'ssl';
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = '465';
    $mail->isHTML();
    $mail->Username = 'dagmawi****@gmail.com';
    $mail->Password = '***********';
    $mail->SetFrom($email);
    $mail->Subject = $subjec;
    $mail->Body = $message1;
    $mail->AddAddress($email1);
    
    $mail->Send();
}
?>

【问题讨论】:

  • 尽管您需要在chk() 中调用event.preventDefault(); 来停止提交表单以及Ajax 提交,但我还是希望
  • 看看你服务器上的日志,应该会告诉你一些事情
  • 两件事:升级到最新的PHPMailer;阅读故障排除指南,了解如何诊断此类问题。 Gmail 有一些非常有据可查的奇怪之处。还将您的代码基于 PHPMailer 示例 - 您没有调试输出和错误检查,因此您甚至无法判断它失败了,更不用说查看原因了。
  • 与 ajax 无关,它工作正常问题出在 sendmail.php

标签: php phpmailer


【解决方案1】:

尝试将您的$mail-&gt;IsHTML(); 替换为$mail-&gt;IsHTML(true); 并删除$mail-&gt;Body = $message1;,只需在$mail-&gt;AddAddress($email1); 之后添加$mail-&gt;MsgHTML($message1);

【讨论】:

  • 这些更改不会有任何作用。
猜你喜欢
  • 2021-12-16
  • 1970-01-01
  • 2020-05-09
  • 2020-09-30
  • 1970-01-01
  • 2017-01-10
  • 2016-01-18
  • 2012-03-16
  • 2011-07-16
相关资源
最近更新 更多