2011-06-28 1 views
6

Я создал простую форму контакта с PHP, которая должна отправлять почту через скрипт Swift-Mailer.Ошибка Swift-Mailer, «Адрес в почтовом ящике указан [] не соответствует RFC«

Проблема я получаю эту ошибку

Uncaught исключение 'Swift_RfcComplianceException' с сообщением "Адрес в почтовом ящике с учетом [] не соответствует RFC 2822, 3.6.2.

Возможно, я использую неверный адрес электронной почты. Но поскольку я использую [email protected] для проверки скрипта, проблема, вероятно, в другом месте. Это моя конфигурация:

Если почта отправляется на:

$my_mail = '[email protected]'; 
$my_name = 'My Name'; 

Содержание сообщения:

$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$message = trim($_POST['message']); 
$date = date('d/m/Y H:i:s'); 
$ipaddress = $_SERVER['REMOTE_ADDR']; 

$content = $message.'\n\nSent on: '.$date.' From: '.$ipaddress; 

Функция я использовать для отправки почты с помощью SwiftMailer:

function send_mail() { 
require('/path/to/swift_required.php'); 

//The means of transport 
$transport = Swift_SmtpTransport::newInstance('mail.mydomain.com', 25); 
$transport->setUsername('myusername'); 
$transport->setPassword('mypass'); 

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

//The message 
$mail = Swift_Message::newInstance(); 
$mail->setSubject('Hello'); 
$mail->setFrom(array($email => $name)); 
$mail->setTo(array($my_mail => $my_name)); 
$mail->setBody($content, 'text/plain'); 

//Sending the message 
$test = $mailer->send($mail); 

if ($test) { 
    echo '<p>Thank you for contacting us '.$name.'! We will get in touch soon.</p>'; 
} 
else { 
      echo '<p>Something went wrong. Please try again later.</p>'; 
} 
} 

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

Благодарим за помощь.

Редактировать: Просто проверьте с использованием gmail как сервера smtp. К сожалению, он по-прежнему дает точные результаты.

+0

Сбросить содержимое '$ email' и' $ my_email' после того, как вы выполнили свою работу trim/htmlspecialchars/strip_tags и посмотрите, как они выглядят. Сам код swiftmailer выглядит нормально, поэтому, возможно, адреса становятся искалеченными где-то, прежде чем они достигнут swiftmailer. –

+2

И удалите как 'strip_tags', так и' htmlspecialchars'. Эти две функции не предназначены для работы с адресами и именами электронной почты, но с HTML. Я думаю, вы смешиваете концепции здесь. Делайте правильное выживание, а не вымирание мозга. Знайте, что вы делаете и почему! – hakre

+0

@Marc_B Вот что я и подозревал. Но они были правильными ... Мое другое предположение, может ли ошибка ссылаться не на отправленный адрес, а на адрес получателя? я попробую попробовать с адресом gmail в качестве получателя и с gmail smtp-сервером, а также ... – Maverick

ответ

2

Все ваши переменные данных (адреса, имена ...) кажутся глобальными. Глобальные переменные не могут быть прочитаны из функций, если вы не передадите их в качестве параметров (рекомендуемый способ) или не используйте ключевое слово global (или массив $GLOBALS).

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