如何通过电子邮件(或其他选项)发送联系表单数据

时间:2016-01-01 01:58:04

标签: php email phpmailer

我想知道当有人填写我的联系表单时,有哪些选项可用于向我的电子邮件帐户发送电子邮件。我的设置是在AWS上运行的Microsoft 2012 Server实例。

我有IIS,PHP5.6并且有一个本地SMTP服务器正在运行(我已经成功地在我的本地环境中发送了测试电子邮件)。似乎无论我试图通过电子邮件尝试发送我的联系表格数据,都会失败。

我尝试过使用Pear和PHPMailer,两者都总是抛出错误。我已经尝试通过文档和搜索网站(包括Stack Overflow)对过去8小时内的这些错误进行故障排除。我被困住了,不知道下一步该尝试什么。是否有其他选项缺少的东西?这是我第一次设置我自己的服务器,这是一个很大的麻烦(虽然我认为一旦我了解了所有内容,它最终会得到回报)。如果PHPMailer是我需要使用的,我可以粘贴我的代码,我一直在使用gmail示例。

我在PHPMailer中遇到的当前错误:

  

2016-01-01 01:45:32客户 - >服务器:EHLO www.xeno-studios.com   2016-01-01 01:45:32客户 - >服务器:STARTTLS 2016-01-01   01:45:32 SMTP错误:无法连接到SMTP主机。 2016年1月1日   01:45:32客户 - >服务器:退出2016-01-01 01:45:32 SMTP错误:退出   命令失败:2016-01-01 01:45:32 SMTP connect()失败。   https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting梅勒   错误:SMTP连接()失败。   https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

//example.php
<?php
require 'phpmailer/PHPMailerAutoload.php';

    $mail = new PHPMailer(); // create a new object
    $mail->IsSMTP(); // enable SMTP
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true; // authentication enabled
    //$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
    $mail->Host = gethostbyname('smtp.gmail.com');
    $mail->Port = 587; // or 587
    $mail->IsHTML(true);
    $mail->Username = "myemail@gmail.com";
    $mail->Password = "gmailpass";
    $mail->SetFrom("myemail@gmail.com");
    $mail->Subject = "Test";
    $mail->Body = "hello";
    $mail->AddAddress("recipient@gmail.com");
    if(!$mail->Send()){
          echo "Mailer Error: " . $mail->ErrorInfo;
   } else {
     echo "Message has been sent";
   }
?>

1 个答案:

答案 0 :(得分:0)

由于Google smtp服务器,这一定是失败的。显然,他们一直在改变人们进行身份验证的方式,这可能是我遇到错误的部分原因。我最后查看了AWS SES以获取我的邮件服务器设置,并在我的PHPMailer函数中使用了这些凭据。它很容易设置和工作就像一个魅力。