我有一个表单,它使用PHP脚本将数据插入MySQL数据库,然后通过Swiftmailer以相同的详细信息回复确认电子邮件。脚本如下。
当在本地访问时,脚本都输入数据并通过Swiftmailer通过远程SMTP(gmail)发送确认电子邮件。 I.E.在本地服务器上的浏览器中通过localhost:XXXXXX / MyCoolSignupPage.php使用表单时,一切都很好。
然而,当通过互联网远程调用时(即当我转到http://mywebsite.com/mycoolsignuppage.php时),表单会将数据插入到数据库中,但Swiftmailer不会发送响应电子邮件,并且没有回显“成功”。< / p>
要注意,A)Swiftmailer库位于根目录中。可能不是最好的做法。 B)该站点在Inetpub /我正在使用IIS和C)没有入站邮件端口是打开的。
cURL和Open_SSL都没有被注释掉。
以下是代码:
<?php
require 'db.php';
foreach($_POST as $key => $value){
$$key = $value;
}
$stm = $db->prepare("INSERT INTO signup
(
email,
firstname,
lastname,
acountnumber,
couponcode
)
VALUES (
:email,
:firstname,
:lastname,
:accountnumber,
:couponcode
)");
$stm->bindParam(":email", $email);
$stm->bindParam(":firstname", $firstname);
$stm->bindParam(":lastname", $lastname);
$stm->bindParam(":accountnumber", $accountnumber);
$stm->bindParam(":couponcode", $couponcode);
$stm->execute();
require_once 'swiftmailer/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
->setUsername('company@email.com')
->setPassword('difficultpassword');
$content = '
<h3>Hello, '.$firstname.'! Here are your registration details.</h3>
<table>
<tr>
<th align="left">Full Name:</th>
<td>'.$firstname.' '.$lastname.'</td>
</tr>
<th align="left">Account Number:</th>
<td>'.$accountnumber.'</td>
</tr>
<tr>
<th align="left">Coupon Code:</th>
<td>'.$couponcode.'</td>
</tr>
<tr>
</table>
<p>Signed,</p>
<p>The Company/p>
';
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Email Subject')
->setFrom(array('company@email.com' => 'The Company'))
->setTo(array($email => $email))
->setBody($content, 'text/html');
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
echo "success";
?>