使用Swiftmailer到SMTP的脚本适用于localhost,但不能通过IP地址访问脚本

时间:2012-08-03 22:36:16

标签: php mysql iis swiftmailer

我有一个表单,它使用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";
?>

0 个答案:

没有答案