我正在尝试配置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发件人地址被拒绝:不属于auth用户。\ r \ n” 如果从网站发送消息,我无法理解为什么我需要“发件人”字段?这个人只是填写表格,我想收到他或她填写的数据的电子邮件?我应该在“发件人”字段中写什么?
UPD:最后发送电子邮件!!!刚刚将“发件人”和“收件人”电子邮件地址设置为相同 感谢大家的帮助
答案 0 :(得分:0)
看起来你错过了这一行的结束双引号:
$message = "Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::;
应该是:
$message = "Name:$name::::::::::Email:$email::::::::::Phone No:$phone:::::::::;";
此外,您不应该发布您的邮件帐户信息。是时候更改帐户的密码了。
答案 1 :(得分:0)
检查一下。您使用的是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的真正发件人地址
我认为这有助于你。