Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: передача почты по SMTP со вложенным файлом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: SMTP, PHP, прикрепить файл
Johnybgoode
Отправлено: 19 Декабря, 2012 - 23:36:11
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Всем привет! Написал вот такой код для отправки писем из формы по протоколу SMTP.
PHP:
скопировать код в буфер обмена
  1.  
  2. header('content-type: text/html; charset=windows-1251');
  3.  
  4. $port = 25;
  5. $mydomain = $_POST["domain"];
  6. $smtp_server = "smtp.".$mydomain;
  7. echo $smtp_server."<br>";
  8. $username = $_POST["login"];//в этой и подобных строках данные забираются из формы
  9. $password = $_POST["password"];
  10. $sender = $username."@".$mydomain;
  11. echo $sender."<br>";
  12. $recipient = $_POST["where"];
  13. $subject = $_POST["about"];
  14. $content = $_POST["msg"];
  15.  
  16. // Initiate connection with the SMTP server
  17. $handle = fsockopen($smtp_server, $port);
  18. fputs($handle, "EHLO $mydomain\r\n");
  19.  
  20. // SMTP authorization
  21. fputs($handle, "AUTH LOGIN\r\n");
  22. fputs($handle, base64_encode($username)."\r\n");
  23. fputs($handle, base64_encode($password)."\r\n");
  24.  
  25. // Send out the e-mail
  26. fputs($handle, "MAIL FROM:<$sender>\r\n");
  27. fputs($handle, "RCPT TO:<$recipient>\r\n");
  28. fputs($handle, "DATA\r\n");
  29. fputs($handle, "To: $recipient\r\n");
  30. fputs($handle, "Subject: $subject\r\n");
  31. fputs($handle, base64_encode($content)."\r\n");
  32. fputs($handle, ".\r\n");
  33.  
  34. // Close connection to SMTP server
  35. fputs($handle, "QUIT\r\n");

Вопрос: как добавить сюда функцию прикрепления и передачи файла? В гугле нашёл, как это можно сделать, подключив pear-пакеты "mail.php" и "mail/mime.php". Но для этого, во-первых, придётся переписывать весь код с нуля, а во-вторых, я толком не понял, как их подключать. Работаю на Mac OS X Lion. Устанавливал pear через терминал.
Цитата:
pear install Mail
не работает. Подскажите, как решить вопрос, плиз.
И ещё есть проблема - письма отпраляются без текста - приходит только заголовок. Тоже не знаю, в чём дело.

(Отредактировано автором: 19 Декабря, 2012 - 23:37:38)

 
 Top
Sankaboy
Отправлено: 19 Декабря, 2012 - 23:59:43
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




У меня в обще твой код не работает. Ты смтр к маил.ру подключаешь?
 
 Top
Johnybgoode
Отправлено: 20 Декабря, 2012 - 01:17:03
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Sankaboy пишет:
У меня в обще твой код не работает. Ты смтр к маил.ру подключаешь?
К smtp.yandex.ru. Ты форму создал, из которой данные берутся? Я могу свою форму кинуть, если надо.
 
 Top
armancho7777777 Супермодератор
Отправлено: 20 Декабря, 2012 - 02:21:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




А почему не воспользоваться функцией mail ?
Посмотрите этот класс:
http://forum.php.su/topic.php?fo...35&topic=788
 
 Top
Johnybgoode
Отправлено: 20 Декабря, 2012 - 08:22:24
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




armancho7777777 пишет:
А почему не воспользоваться функцией mail ?
Посмотрите этот класс:
http://forum.php.su/topic.php?fo...35&topic=788

Нельзя мне ей пользоваться. Препод запретил.
 
 Top
Johnybgoode
Отправлено: 20 Декабря, 2012 - 17:19:51
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Короче, установить PEAR-пакеты получилось, но это проблемы не решает, так как код не работает.
[PHP]include 'Mail.php'; // PEAR Mail package
include 'Mail/mime.php'; // PEAR Mail_Mime packge

$from = "*****@yandex.ru";//подставьте свой
$to = "*****@gmail.com";//подставьте
$subject = 'Test mime message with an attachment';

$headers = array ('From' => $from,'To' => $to, 'Subject' => $subject);

$text = 'Text version of email'; // text and html versions of email.
$html = '<html><body>HTML version of email. <strong>This should be bold</strong></body></html>';

$file = 'sample.txt'; // attachment
$crlf = "\n";

$mime = new Mail_mime($crlf);
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$mime->addAttachment($file, 'text/plain');

//do not ever try to call these lines in reverse order
$body = $mime->get();
$headerss = $mime->headers($headers);

$host = "smtp.yandex.ru";
$username = "*****@yandex.ru";//подставить свой логин
$password = "*****";//подставить свой пароль

$smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true,
'username' => $username,'password' => $password));

$mail = $smtp->send($to, $headerss, $body);

if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
}
else {
echo("<p>Message successfully sent!</p>");
}/PHP]
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB