【问题标题】:Swift Mailer automatic sending form dataSwift Mailer 自动发送表单数据
【发布时间】:2013-10-13 03:25:14
【问题描述】:

我正在尝试配置 Swift Mailer 以将表单数据发送到我的电子邮件帐户 简而言之:我有一个网站,我将使用它在我当地的城市出售一些东西 当“购买”按钮处于活动状态时,会出现 3 个简单的表单 重点是将填写这些表格的数据直接发送到我的电子邮件帐户, 作为 PHP 的新手,我已经尝试了几天来使这个简单的脚本工作,但它最终失败了 这是mail.php的代码:

<?php
$name=$_POST["name"];
$email=$_POST["email"];
$phone=$_POST["phone"];
if (isset ($name))
{
$name = substr($name,0,30); 
if (empty($name))
{
echo "<center><b>Invalid name<p>";
echo "<a href=index.php>Come back and fill up the form properly</a>";
exit;
}
}
else
{
$name = "Invalid name";
}
if (isset ($email))
{
$email = substr($email,0,30); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Email Invalid!<p>";
echo "<a href=index.php>Try again</a>";
exit;
}
}
else
{
$email = "Invalid";
}
if (isset ($phone))
{
$phone = substr($phone,0,15); 
if (empty($phone))
{
echo "<center><b>Empty message!!!<p>";
echo "<a href=index.php>Try again</a>";
exit;
}
}
else
{
$phone = "invalid";
}
$i = "invalid";
if ($name == $i AND $email == $i AND $phone == $i)
{
echo "Error! No data was transferred to the script";
exit;
}
$to = "zakaz@playpad2.ru";  
$subject = "New order ";
$message = "Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::;
require_once 'lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.yandex.ru', 465, 'ssl')
 ->setUsername('zakaz@playpad2.ru')
 ->setPassword('jhfy;tdjtujdyj');

$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('kirabidzu@gmail.com' => 'PlayPad 2 Kids tablet order'))
  ->setTo(array('zakaz@playpad2.ru', 'zakaz@playpad2.ru' => 'A name'))
  ->setBody('Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::');

// Send the message
$numSent = $mailer->send($message);

if (!$numSent) {
  print "Can't send a message";
} 
echo "<center><b>Thank you<a href=index.php>Proceed</a> to continue...>";
exit;
?>"

这是一个表格,位于主页上:

<form name="form" action="mail.php" method="POST"><b>Name here </b> 
<br> <input type="text" size="70%" name="name" maxlength="45"> <br>
<b>Phone No </b> 
<br> <input type="text" size="70%" name="phone" maxlength="15"> <br>
<b>E-Mail </b> 
<br> <input type="text" size="70% " name="email" maxlength="45"> <br>
 <input type="submit"><div class="button"></div>

请帮忙!

更改了smtp服务器端口,出现新错误: PHP 致命错误:未捕获异常“Swift_TransportException”,消息“预期响应代码 250,但得到代码“553”,消息“553 5.7.1 发件人地址被拒绝:不归身份验证用户所有。\r\n” A 无法理解如果消息是从站点发送的,为什么我需要“发件人”字段?这个人只是填写了表格,我想收到一封包含他或她填写的数据的电子邮件?我应该在“发件人”字段中写什么?

UPD:电子邮件终于发送了!!!刚刚使“发件人”和“收件人”电子邮件地址相等 感谢大家的帮助

【问题讨论】:

  • 所以这不是电子邮件没有送达的问题,而是电子邮件发送到了错误的地址。希望 playpad2.ru 的人不会介意。

标签: php forms email e-commerce swiftmailer


【解决方案1】:

看起来您在这一行缺少一个结束双引号:

$message = "Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::;

应该是:

$message = "Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::;";

另外,您不应该发布您的邮件帐户信息。是时候更改您的帐户密码了。

【讨论】:

  • 我在尝试使用您的凭据发送电子邮件时收到以下错误:PHP Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.yandex.ru [Connection refused #61]'。您可以访问主机吗?
  • 我也遇到了同样的错误,如何检查是否可达?用 ping 命令?对不起新手问题:)
  • 我检查了ping,它还活着。我认为您必须与您的电子邮件提供商核实为什么无法访问邮件服务器。顺便说一句,当您更改端口时,新的错误是什么?
  • Sutandiono,邮件投递正常,但我希望表单数据出现在邮件文档的正文中,我该怎么做?我应该如何编辑这个字符串以使数据出现,你能帮忙吗? ->setBody('姓名:$name::::::::::Email:$email::::::::::电话号码:$phone:::::::::');
  • 在此代码的末尾:-&gt;setBody('Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::');,或者将单引号更改为双引号,例如:-&gt;setBody("Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::");,或者简单地使用您之前创建的$message-&gt;setBody($message); .请注意,您需要使用双引号而不是单引号将变量扩展到它包含的任何内容。
【解决方案2】:

检查这个。您使用 smtp.yandex.ru 的 SMTP 服务器

$transport = Swift_SmtpTransport::newInstance('smtp.yandex.ru', 465, 'ssl')

发件人地址来自gmail

->setFrom(array('kirabidzu@gmail.com' => 'PlayPad 2 Kids tablet order'))

有些服务器会检查发件人地址是否与真实用户相对应。这看起来像你的问题。要解决该错误,我认为您有两种选择。

a) 可以设置 gmail 的 smtp:

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl');

b) 取 yandex.ru 的真实发件人地址

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 2011-01-30
    • 2012-01-14
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多