PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
MadMike
Отправлено: 27 Августа, 2013 - 05:47:16
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010
Откуда: Россия
Помог: 0 раз(а)
[+]
Настроил скрипт для отправки писем чз smtp. Все нормально работает, но
не работают теги html. Хочу вставить в тело письма ссылку на файл на сервере.
Вот сам скрипт:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$config [ 'smtp_username' ] = '***' ; //Смените на имя своего почтового ящика.
$config [ 'smtp_port' ] = '25' ; // Порт работы. Не меняйте, если не уверены.
$config [ 'smtp_host' ] = 'mail.tspu.edu.ru' ; //сервер для отправки почты
$config [ 'smtp_password' ] = '***' ; //Измените пароль
$config [ 'smtp_debug' ] = true ; //Если Вы хотите видеть сообщения ошибок, укажите true вместо false
$config [ 'smtp_charset' ] = 'windows-1251' ; //кодировка сообщений. (или UTF-8, итд)
$config [ 'smtp_from' ] = 'TEST MAIL!!!!' ; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого"
function smtpmail( $mail_to , $subject , $message , $headers = '' ) {
global $config ;
$SEND = "Date: " . date ( "D, d M Y H:i:s" ) . " UT\r \n " ; $SEND .= 'Subject: =?' . $config [ 'smtp_charset' ] . '?B?' . base64_encode ( $subject ) . "=?=\r \n " ; if ( $headers ) $SEND .= $headers . "\r \n \r \n " ;
else
{
$SEND .= "Reply-To: " . $config [ 'smtp_username' ] . "\r \n " ;
$SEND .= "MIME-Version: 1.0\r \n " ;
$SEND .= "Content-Type: text/plain; charset=\" " . $config [ 'smtp_charset' ] . "\" \r \n " ;
$SEND .= "Content-Transfer-Encoding: 8bit\r \n " ;
$SEND .= "From: \" " . $config [ 'smtp_from' ] . "\" <" . $config [ 'smtp_username' ] . ">\r \n " ;
$SEND .= "To: $mail_to <$mail_to >\r \n " ;
$SEND .= "X-Priority: 3\r \n \r \n " ;
}
$SEND .= $message . "\r \n " ;
if ( ! $socket = fsockopen ( $config [ 'smtp_host' ] , $config [ 'smtp_port' ] , $errno , $errstr , 30
) ) { if ( $config [ 'smtp_debug' ] ) echo $errno . "<br>" . $errstr ;
return false ;
}
if ( ! server_parse( $socket , "220" , __LINE__ ) ) return false ;
fputs ( $socket , "HELO " . $config [ 'smtp_host' ] . "\r \n " ) ; if ( ! server_parse( $socket , "250" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Не могу отправить HELO!</p>' ;
return false ;
}
fputs ( $socket , "AUTH LOGIN\r \n " ) ; if ( ! server_parse( $socket , "334" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Не могу найти ответ на запрос авторизаци.</p>' ;
return false ;
}
if ( ! server_parse( $socket , "334" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Логин авторизации не был принят сервером!</p>' ;
return false ;
}
if ( ! server_parse( $socket , "235" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>' ;
return false ;
}
fputs ( $socket , "MAIL FROM: <" . $config [ 'smtp_username' ] . ">\r \n " ) ; if ( ! server_parse( $socket , "250" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Не могу отправить комманду MAIL FROM: </p>' ;
return false ;
}
fputs ( $socket , "RCPT TO: <" . $mail_to . ">\r \n " ) ;
if ( ! server_parse( $socket , "250" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Не могу отправить комманду RCPT TO: </p>' ;
return false ;
}
fputs ( $socket , "DATA\r \n " ) ;
if ( ! server_parse( $socket , "354" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Не могу отправить комманду DATA</p>' ;
return false ;
}
fputs ( $socket , $SEND . "\r \n .\r \n " ) ;
if ( ! server_parse( $socket , "250" , __LINE__ ) ) {
if ( $config [ 'smtp_debug' ] ) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>' ;
return false ;
}
fputs ( $socket , "QUIT\r \n " ) ; return TRUE ;
}
function server_parse( $socket , $response , $line = __LINE__ ) {
global $config ;
while ( @ substr ( $server_response , 3 , 1 ) != ' ' ) { if ( ! ( $server_response = fgets ( $socket , 256
) ) ) { if ( $config [ 'smtp_debug' ] ) echo "<p>Проблемы с отправкой почты!</p>$response <br>$line <br>" ;
return false ;
}
}
if ( ! ( substr ( $server_response , 0
, 3
) == $response ) ) { if ( $config [ 'smtp_debug' ] ) echo "<p>Проблемы с отправкой почты!</p>$response <br>$line <br>" ;
return false ;
}
return true ;
}
$dataform2 = "<a href=" { $file } ">download</a>" ;
$headers = 'MIME-Version: 1.0' . "\r \n " ;
$headers .= 'Content-type: text/html; charset="windows-1251"' . "\r \n " ;
$headers .= 'From: TSPU@mail.ru' . "\r \n " ;
smtpmail( 'mymail@mail.ru' , 'Новая заявка на...!' , $dataform2 , $headers ) ;
Подскажите как сделать чтоб работало?
Или может можно файл сразу из формы взять и вставить в письмо?(Отредактировано автором: 27 Августа, 2013 - 06:05:00)
MadMike
Отправлено: 27 Августа, 2013 - 08:26:33
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010
Откуда: Россия
Помог: 0 раз(а)
[+]
armancho7777777 пишет: MadMike , а почему не воспользоваться функцией
mail для отправки почты из php ?
Все вроде разобрался с файлами и smtp.
Теперь кодировка гонит.
Файлы .doc с русским названием получают имя из кубиков(
Причем рисунки с русским названием нормально переводятся на транслит
Кусок с кодировками:
PHP:
скопировать код в буфер обмена
$header = "Date: " . date ( "D, j M Y G:i:s" ) . " +0700\r \n " ; $header .= "X-Mailer: The Bat! (v3.99.3) Professional\r \n " ;
$header .= "X-Priority: 3 (Normal)\r \n " ;
$header .= "Message-ID: <172562218." . date ( "YmjHis" ) . "@mail.ru>\r \n " ; $header .= "MIME-Version: 1.0\r \n " ;
$header .= "Content-Type: multipart/mixed; boundary=\" ----------A4D921C2D10D7DB\" \r \n " ;
$file = $way2 ;
$fp = fopen ( $file , "rb" ) ;
$text = "------------A4D921C2D10D7DB
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: 8bit
привет, это текст письма
------------A4D921C2D10D7DB
Content-Type: application/octet-stream; name=" . $diplom . "
Content-transfer-encoding: base64
Content-Disposition: attachment; filename=" . $diplom . "
" . $code_file1 . "" ;
Вообще убрать бы замену символов везде а то имя меняет. Я пытаюсь убрать эти функции, но тогда название письма тоже краказябрами становится((Отредактировано автором: 27 Августа, 2013 - 08:31:31)
akyl91
Отправлено: 28 Августа, 2013 - 16:19:13
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Март 2011
Помог: 0 раз(а)
Сам не проверял но тут вроде все расписано про smtp
http://www.php.su/articles/?cat=...ail&page=007
А в PHPMailer действительно намучаешься: то теги, то кодировка, то понос, то золотуха.
(Отредактировано автором: 28 Августа, 2013 - 16:21:13)
MadMike
Отправлено: 29 Августа, 2013 - 08:49:27
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010
Откуда: Россия
Помог: 0 раз(а)
[+]
akyl91 , я выше и привел код с этой страницы. )
только я имя файла после загрузки на сервер и перед тем как его открывать изменяю на корректное. иначе при открытии файла имя портится - либо расширение потеряешь либо кодировка.
и еще вопрос! как несколько адресатов указать?вот тут:
чз запятую чтот не работает.(Отредактировано автором: 29 Августа, 2013 - 09:07:17)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB