2013-10-06 2 views
0

Я пытаюсь настроить Swift Mailer для отправки данных формы на мою учетную запись электронной почты Вкратце: у меня есть сайт, с помощью которого я собираюсь продать кое-что в своем городе Есть 3 простых формы, которые появляются, когда кнопка «Купить» активна Дело в том, чтобы отправить данные, заполнив эти формы непосредственно на мою учетную запись электронной почты, Будучи новичком в PHP, я пробовал несколько дней, чтобы сделать эту простую работу скрипта, но в конечном итоге отказ здесь код mail.php:Swift Mailer автоматическая отправка формы данных

<?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 = "[email protected]"; 
$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('[email protected]') 
->setPassword('jhfy;tdjtujdyj'); 

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

// Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'PlayPad 2 Kids tablet order')) 
    ->setTo(array('[email protected]', '[email protected]' => '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: Наконец, письма отправляются !!! Просто сделал «From» и «To» адреса электронной почты равна Спасибо всем вам за помощью

+0

Так что это не вопрос доставки не электронной почты, но электронные письма отправляются по неправильному адресу. Надеюсь, человек на playpad2.ru не будет возражать. – Sutandiono

ответ

0

Похоже, вам не хватает закрывающую кавычку на этой линии:

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

Должно быть:

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

Кроме того, вы не должны размещать информацию о своей учетной записи электронной почты. Пришло время изменить пароль своей учетной записи.

+0

отредактировал его, до сих пор не отправлено письмо :( – user2851874

+0

При попытке отправить электронное письмо с вашими учетными данными я получил следующую ошибку: 'PHP Неустранимая ошибка: исключить исключение« Swift_TransportException »с сообщением« Невозможно установить соединение с хостом smtp.yandex .ru [Connection отказано # 61] ''. Доступен ли хост для вас? – Sutandiono

+0

У меня такая же ошибка, как проверить, доступна ли она или нет? с помощью команды ping?Извините за новичка qustions :) – user2851874

0

Проверьте это. Вы с помощью SMTP, сервер smtp.yandex.ru

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

И адрес отправителя от Gmail

->setFrom(array('[email protected]' => 'PlayPad 2 Kids tablet order')) 

Есть серверы, которые проверяют, что адрес отправителя соответствует действительно пользователю. И это похоже на вашу проблему. Чтобы решить эту ошибку, я думаю, что у вас есть два варианта.

а) вы можете установить SMTP в Gmail:

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

б) взять действительно отправителя адрес yandex.ru

Я hoope, что это поможет вам.

Смежные вопросы