Перейти к содержимому


Россылка вложений через sendmail


Сообщений в теме: 12

#1 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 27 Январь 2015 - 16:31

А как можно через функции программы задать отсылку присоединенного файла (фалов) через sendmail?

#2 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 27 Январь 2015 - 16:45

Просмотр сообщенияАлександр Пономарев (27 Январь 2015 - 16:31) писал:

А как можно через функции программы задать отсылку присоединенного файла (фалов) через sendmail?

Ну, например так
$subj = 'Тема письма';
$mail_address = 'user@host.com';
$letter = 'Это письмо с вашим вложением';//Здесь тело письма
//$YOUR_file - это ваше вложение, сохраненое в базе
$YOUR_file = file_get_contents(get_file_path(7010, $id, $file_name));

$my_attach['name'] = 'include.pdf';
$my_attach['disp'] = "attachment";
$my_attach['type'] = "application/pdf";
$my_attach['content'] = $YOUR_file;

$attach_files[] = $my_attach;

sendmail($subj, $letter, "$mail_address", "", "", "", "text/html", "utf-8", array(), $attach_files, -1);

Сообщение отредактировал maksn: 27 Январь 2015 - 16:50

"...Сижу, паяю. CRM починяю..."
Мои разработки

#3 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 27 Январь 2015 - 16:54

Просмотр сообщенияmaksn (27 Январь 2015 - 16:45) писал:

Ну, например так
$mail_body = 'Это письмо с вашим вложением';//Здесь тело письма
//$YOUR_file - это ваше вложение, сохраненое в базе
$YOUR_file = file_get_contents(get_file_path(7010, $id, $file_name));

$my_attach['name'] = 'include.pdf';
$my_attach['disp'] = "attachment";
$my_attach['type'] = "application/pdf";
$my_attach['content'] = $YOUR_file;

$attach_files[] = $my_attach;

sendmail($subj, $letter, "$mail_body", "", "", "", "text/html", "utf-8", array(), $attach_files, -1);

Спасибо за оперативность в ответе, он не могли бы вы дать дополнительно пояснения по следующим вопросам:
1. Где прочитать полное описание синтаксиса sendmail?
2. Если не pdf, а word или excel или jpeg?
3. Почему "$mail" в кавычках, а $letterбез?
4. Что такое $subj? $letter? Заголовок и тело письма?

#4 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 27 Январь 2015 - 17:08

Просмотр сообщенияАлександр Пономарев (27 Январь 2015 - 16:54) писал:

Спасибо за оперативность в ответе, он не могли бы вы дать дополнительно пояснения по следующим вопросам:
1. Где прочитать полное описание синтаксиса sendmail?
2. Если не pdf, а word или excel или jpeg?
3. Почему "$mail" в кавычках, а $letterбез?
4. Что такое $subj? $letter? Заголовок и тело письма?

1. Ну, разве что в файле functions1.php
2. Все можно. Нужно только правильно указать расширение
3. Просто так написал
4. Да, совершенно точно

Код немного подправил. См. верхний ответ

Сообщение отредактировал maksn: 27 Январь 2015 - 17:09

"...Сижу, паяю. CRM починяю..."
Мои разработки

#5 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 30 Март 2017 - 00:25

Я так понимаю, что для отправки сформированной html страницы не в теле письма, а в виде приложения никак не избежать ее сохранения в виде файла до отправки? Просто отослать "на лету" нельзя никак?

#6 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Март 2017 - 09:18

Зачем в виде файла то сохранять, не совсем понял? В приведенном выше синтаксисе подставляется не путь к файлу, а как раз таки его содержимое.

$my_attach['name'] = 'my_file.html'; // произвольное имя, с которым файл будет лежать в письме
$my_attach['disp'] = "attachment";
$my_attach['type'] = "text/html"; // проставляем соответствующий тип
$my_attach['content'] = $content; // сюда подставляем любое содержимое из переменной, сформированное на лету


#7 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 30 Март 2017 - 14:51

Да я тоже так думал, но вот что-то не сработало в конструкции:

$nom=''; //Номер счета
$data=''; //Дата счета
$summ_it=''; // Сумма счета
$html=''; Html страница, которую надо отправить (она и в теле письма и в приложении)
$file['name'] = "schet.html";
$file['disp'] = "attachment";
$file['type'] = "text/html";
$file['content'] = $html;
$attach_files[] = $file;
$kuda=''; // Адрес получателя
$out=sendmail("Счет № ".$nom." от ".$data." на ".$summ_it." рублей", $html, $kuda, "", "","text/html", "utf-8", "", $attach_files, -1); 

Не совсем понятен синтаксис sendmail по полям, что в каком и для чего. Брал из примера. Но почему-то не работает и пишет "Message body empty"

#8 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Март 2017 - 14:55

Значит где то ошиблись и переменная, которую вставляете в тело - пуста.

#9 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Март 2017 - 14:59

Просмотр сообщенияАлександр Пономарев (30 Март 2017 - 14:51) писал:

Не совсем понятен синтаксис sendmail по полям, что в каком и для чего

https://clientbase.r...indpost&p=32661 Сами же спрашивали.

Конкретно sendmail тут: https://code-stock.c...able=50&line=21

#10 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 30 Март 2017 - 21:49

Просмотр сообщенияCbCoder (30 Март 2017 - 14:55) писал:

Значит где то ошиблись и переменная, которую вставляете в тело - пуста.

То есть проблема в теле, а не во вложении?

#11 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 31 Март 2017 - 09:13

Просмотр сообщенияАлександр Пономарев (30 Март 2017 - 14:51) писал:

Да я тоже так думал, но вот что-то не сработало в конструкции:

$nom=''; //Номер счета
$data=''; //Дата счета
$summ_it=''; // Сумма счета
$html=''; Html страница, которую надо отправить (она и в теле письма и в приложении)
$file['name'] = "schet.html";
$file['disp'] = "attachment";
$file['type'] = "text/html";
$file['content'] = $html;
$attach_files[] = $file;
$kuda=''; // Адрес получателя
$out=sendmail("Счет № ".$nom." от ".$data." на ".$summ_it." рублей", $html, $kuda, "", "","text/html", "utf-8", "", $attach_files, -1); 

почему-то не работает и пишет "Message body empty"

Так проверьте что у Вас в переменной $html
Кстати, в коде у Вас она пустая. Как и адрес получателя
Прежде чем запускать sendmail выведите на экран содержимое. Например, закоментируйте sendmail и выводите эхом, для отладки
$nom=''; //Номер счета
$data=''; //Дата счета
$summ_it=''; // Сумма счета
$html=''; Html страница, которую надо отправить (она и в теле письма и в приложении)
$file['name'] = "schet.html";
$file['disp'] = "attachment";
$file['type'] = "text/html";
$file['content'] = $html;
$attach_files[] = $file;
$kuda=''; // Адрес получателя

echo 'BODY='.$html;
//$out=sendmail("Счет № ".$nom." от ".$data." на ".$summ_it." рублей", $html, $kuda, "", "","text/html", "utf-8", "", $attach_files, -1);


Параметры sendmail по порядку:
$subject,
$body,
$to,
$from = "",
$from_name = "",
$reply_to = "",
$content_type = "text/html",
$charset = "utf-8",
$headers = array(),
$attach_files = array(),
$smtp_server_id = -1,
$thread_id = 1,
$line_id = 0,
$user_id = 0

Сообщение отредактировал maksn: 31 Март 2017 - 09:24

"...Сижу, паяю. CRM починяю..."
Мои разработки

#12 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 02 Апрель 2017 - 15:03

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

#13 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 02 Апрель 2017 - 17:32

Все срослось! Один параметр пропустил

sendmail("Счет № ".$nom." от ".$data." на ".$summ_it." рублей",$html2,$mail_adres,"","","","text/html","utf-8","",$attach_files,-1,1,0,0);

Всем спасибо!

А никто не знает, нет ли встроенной функции конвертации html в pdf до отправки?





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных