【问题标题】:Setting Up PHP Mailer设置 PHP 邮件程序
【发布时间】:2017-04-19 08:09:36
【问题描述】:

我有几个关于设置 PHP 邮件程序的问题...... 我的第一个问题是,PHP 文件/文件夹是否与我所有其他文件(.html、css 和 JS)位于同一个位置?

如果是这样,那么我确实需要一些帮助来设置它,或者我有点迷失了......我的 PHP 文件如下:

<?php

    $emailTo = "myemail@yahoo.com"; // Enter your email for feedbacks here 

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=utf-8\r\n";
    $headers .= "From: ".$_POST['rsEmail']."\r\n";

    if (!isset($_POST['rsSubject'])) {
        $subject = "Contact Form Message"; // Enter your subject here
    } else {
        $subject = $_POST['rsSubject'];
    }

    reset($_POST);

    $body = "";
    $body .= "<p><b>Name: </b>".$_POST['rsName']."</p>";
    $body .= "<p><b>Email: </b>".$_POST['rsEmail']."</p>";
    $body .= "<p><b>Subject: </b>".$subject."</p>";
    $body .= "<p><b>Message: </b>".$_POST['rsMessage']."</p>";  

    if( mail($emailTo, $subject, $body, $headers) ){
        $mail_sent = true;
    } else {
        $mail_sent = false;
    }   
    if(!isset($resp)){
        echo json_encode($mail_sent);
    }
?>

我相信我所拥有的相应 javascript 是:

function isValidEmail(emailAddress) {
        var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
        return pattern.test(emailAddress);
    };

谢谢大家的帮助!意义重大:)

编辑:当表单填写正确时,它会说:“恭喜您的消息已发送”——这意味着这是一个有效的表单提交,我只是从未真正收到电子邮件。

编辑 2:我去我的 filezilla 尝试从那里编辑/查看 js 文件,我收到以下错误:

不完全确定这意味着什么(对这一切来说有点新鲜)。这也是我的表格:

                        <form class="rsForm" action="php/mailsender.php" method="post">
                            <div class="input-field">
                                <label>Name</label>
                                <input type="text" name="rsName" value="">
                                <span class="line"></span>
                            </div>

                            <div class="input-field">
                                <label>Email</label>
                                <input type="email" name="rsEmail" value="">
                                <span class="line"></span>
                            </div>

                            <div class="input-field">
                                <label>Subject</label>
                                <input type="text" name="rsSubject" value="">
                                <span class="line"></span>
                            </div>

                            <div class="input-field">
                                <label>Message</label>
                                <textarea rows="4" name="rsMessage"></textarea>
                                <span class="line"></span>
                            </div>

                            <span class="btn-outer btn-primary-outer ripple">
                                <input class="rsFormSubmit btn btn-lg btn-primary" type="submit" value="Send">
                            </span>
                        </form>

【问题讨论】:

  • 您的html 怎么样? 从不依赖javascript 来验证任何数据,因为这是基于客户端的,并且会受到用户的影响。在这种情况下,您如何处理form 提交很重要。
  • action 部分表示您将input 数据发送到文件夹php 和文件mailsender.php。因此,您上面显示的代码应该在该文件和文件夹中。如果确实如此,请查看@AdrianHiggins 给出的答案。一个快速的debug 技巧也是传播随机消息,然后查看它不再去的地方。
  • 是的,我有一个 php 文件夹,其中包含该目录中的确切文件(上图)。所以这似乎设置正确......
  • 如果您愿意,我可以在此聊天中进一步帮助您:chat link
  • @Nytrix 仍然不让我,也许重新创建房间 - 或者新建一个?

标签: php html email phpmailer


【解决方案1】:

因此,除非您的表单位于已由网络托管服务托管的网站上,或者您使用 MAMP PRO 之类的工具在本地服务器上测试您的网页(PRO 因为它带有 Postfix),否则您将不会收到电子邮件。

要让 PHP 真正向您发送电子邮件,您需要像 Postfix 这样的 MTA(邮件传输代理)。当您托管您的网站时,他们会(通常)在他们的服务器上自动为您设置一个。如果您在本地进行测试,例如将文件路径放在浏览器中,您将不会收到电子邮件,因为您的本地主机未设置 MTA。

查看Test emails locally with mamp,了解如何在尚未将您的网站设置在专业服务器上的情况下测试您的电子邮件表单。

如果您对此还有任何疑问,请在 cmets 中标记我!

PS。这是一个非常普遍的问题,人们不知道。这也是我第一次使用它,这就是我购买 MAMP PRO 来测试网站表单的原因。

【讨论】:

  • 比如说,我正在使用 goDaddy 和 cPanel……他们显然为您设置了某种邮件系统。我不完全记得当我创建我的网站时我做了什么来设置它。我会将 php 文件夹/文件留在同一目录中吗?还是被转移到别处?
  • goDaddy 已经为您设置好了,比他说的应该没问题。我的意思是,您实际上已将自己的电子邮件放入 $emailTo 变量中,对吧?
  • @Nytrix 是的,我输入了我的真实电子邮件——我没有足够的声望在你的聊天链接中聊天,哈哈……
  • @JohnBarr 现在可以了。
  • 您不一定需要本地 MTA - 这就是许多人使用 PHPMailer 的原因,因为它不需要;它有一个 SMTP 客户端,因此您可以使用 Gmail 等外部服务作为中继。此外,这真的不是对所发布问题的答案。
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 2014-09-14
  • 2015-01-27
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
相关资源
最近更新 更多