如何使用本地 xampp 和 php 联系人表单从我的 mac 发送邮件

Posted

技术标签:

【中文标题】如何使用本地 xampp 和 php 联系人表单从我的 mac 发送邮件【英文标题】:How to send mail from my mac using local xampp with php contacts form 【发布时间】:2018-06-08 14:53:30 【问题描述】:

我的 2016 macbook pro 上安装了 xampp 7.1。我的源文件夹中有一个 php 联系人表单,它由 chrome 连同我的 html 成功呈现。但是,我需要配置 smtp 设置以从我的 mac 本地测试某些功能。

我在 xampp etc 文件夹中找到了一个 php.ini,其中包含一些邮件功能。

我发现了其他引用 phpmailer 的文章,但由于它们已经有几年历史了,我认为 xampp for mac 的较新版本可能具有内置的所有功能。

我可以修改这个 php.ini 文件以使用 gmail 邮箱作为收件人吗?怎么样?

提前致谢

这是邮件功能的复制粘贴:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=smtp.gmail.com
; http://php.net/smtp-port
smtp_port=25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail 
-t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra 
parameters
; to the sendmail binary. These parameters will always replace the 
value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script 
followed by the filename
mail.add_x_header=On

; Log all mail() calls including the full path of the script, line #, 
to address and headers
;mail.log =

【问题讨论】:

代码截图 suck。请在您的问题中包含相关代码中的实际文本。 刚刚添加了 php.ini 文件的邮件功能部分的代码,我认为这是我需要输入提供商 smtp 设置的地方。但是,我不太确定要输入什么,或者这是否是输入设置的地方——根据我相信的一些研究。谢谢你的时间。仅供参考,我是系统管理员(数据中心部署),但完全是新手程序员 @tobe1424:使用您最终想出的代码来编辑您的问题不是正确的做法。相反,如果您想分享您的解决方案,请将其发布为答案。您甚至可以将自己的答案标记为已接受。 @tobe1424:我回滚到上一个版本;您可以从刚刚粘贴的修订历史记录中复制代码,然后将其放入答案中。 【参考方案1】:

如果您尝试将邮件从您的应用服务器发送到您自己的 gmail 收件箱,则无需修改这些设置;使用PHPMailer 是一种更简单的方法。所以让我们一步一步开始吧。

    允许Less secure apps - 或- 为XOAUTH2 配置;归功于@Synchro。

    下载PHPMailer并将PHPMailer.phpSMTP.phpException.php解压到您的xampp/htdocs文件夹

    写一个示例发送邮件页面send.php:(修改为真实账户)

    <?php
    require_once('SMTP.php');
    require_once('PHPMailer.php');
    require_once('Exception.php');
    
    use \PHPMailer\PHPMailer\PHPMailer;
    use \PHPMailer\PHPMailer\Exception;
    
    $mail=new PHPMailer(true); // Passing `true` enables exceptions
    
    try 
        //settings
        $mail->SMTPDebug=2; // Enable verbose debug output
        $mail->isSMTP(); // Set mailer to use SMTP
        $mail->Host='smtp.gmail.com';
        $mail->SMTPAuth=true; // Enable SMTP authentication
        $mail->Username='YourAccount@gmail.com'; // SMTP username
        $mail->Password='YourPassword'; // SMTP password
        $mail->SMTPSecure='ssl';
        $mail->Port=465;
    
        $mail->setFrom('sender@whatever.com', 'optional sender name');
    
        //recipient
        $mail->addAddress('YourAccount@gmail.com', 'optional recipient name');     // Add a recipient
    
        //content
        $mail->isHTML(true); // Set email format to HTML
        $mail->Subject='Here is the subject';
        $mail->Body='This is the HTML message body <b>in bold!</b>';
        $mail->AltBody='This is the body in plain text for non-HTML mail clients';
    
        $mail->send();
    
        echo 'Message has been sent';
     
    catch(Exception $e) 
        echo 'Message could not be sent.';
        echo 'Mailer Error: '.$mail->ErrorInfo;
    
    
    ?>
    
    当以上所有准备就绪后,在您的应用服务器上发出send.php 的url 以发送示例电子邮件
    基于这个例子,你可以写一个联系表格来实际使用。您可能还想更改PHPMailer 的位置,然后您应该修改示例代码中的路径以指向它们所在的新位置。

【讨论】:

这确实比尝试在 XAMPP 中配置邮件服务器要好得多,但是这里有一些小错误,PHPMailer 提供的示例中没有。您不需要启用不太安全的应用程序 - 您可以使用 XOAUTH2,尽管您确实需要 composer 来使用它。 Gmail 不会让您设置任意地址。因为您没有 use PHPMailer Exception 类,所以您正在捕获全局异常,而不仅仅是 PHPMailer 异常。 谢谢你,肯,同步。我会马上试一试! 我能够实现我的目标。再次感谢。最后一个问题。我知道这是我的实验室环境。一旦我发布我的网站,这将如何工作,让我们说,去爸爸。我是保留这个 phpmailer 解决方案还是应该使用其他东西? @tobe1424:我不熟悉 GoDaddy 的服务。通常,如果将它们放在虚拟主机上应该就可以了。在代码中使用相对路径;您可能还需要为该主机配置 XOAUTH2。 罗杰。谢谢。这是我最终用于我的 php 联系人页面的代码。我刚刚将我的 contacts.php 表单上传到 public_html 目录,从用户的角度来看,它可以无缝运行 - 我收到电子邮件

以上是关于如何使用本地 xampp 和 php 联系人表单从我的 mac 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

无法在 localhost 上运行 xampp php 来测试 html 电子邮件表单

如何使用带有 XAMPP 的 PHP 从本地主机发送电子邮件?

来自 php 表单的问题/错误,用于使用 php-mailer 库通过本地主机 Xampp 发送电子邮件

如何配置 XAMPP PHP 通过安全 smtp 我的 ISP 从本地主机发送邮件

PHP 联系表单的配置问题

使用 HTML 表单,如何使用正确的 GET/POST 数据开始调试操作 PHP 脚本? (使用 PhpStorm 和 XAMPP)