1с битрикс дополнительный параметр для передачи функции mail
При отправке писем штатными средства Битрикс, через стандартный PHP механизм — функцию mail(), часто возникают проблемы, такие как попадаение писем в спам или вовсе почта не отправляется. Отправка писем через SMTP поможет решить эту проблему.
Преимущества отправки почты через SMTP
Преимущества использования SMTP-сервера:
Подключение и настройка SMTP в Битриксе
По-умолчанию, Битрикс не поддерживаем SMTP протокол. Для работы с ним необходимо установить соответствующий SMTP модуль из Маркетплейса.
Есть четыре бесплатных модуля SMTP и два платных. По отзывам из бесплатных наиболее устойчивый и работоспособный — модуль SMTP от студии ВебПростор.
Установка модуля «Отправка почты через SMTP»
Для установки модуля SMTP требуется наличие модуля «Ядро для модулей» (будет предложено добавить в процессе установки) и не должно быть ошибок при работе с сокетами (Настройки/Инструменты/Проверка системы).
Настройка модуля «Отправка почты через SMTP»
Модуль гарантированно взаимодействует с сервисами:
Укажите соединения для выбранного сервиса в настройках SMTP:
Укажите настройки для авторизации, если требуется:
Также вы можете указать настройки для ручной отправки писем:
Не забудьте включить модуль на вкладке «Общие настройки»:
Вы можете указать настройки для автоматического создания или удаления файла init.php для сайтов.
Для диагностирования возникающих проблем или отслеживания логов операций, можете включить логирование и указать дополнительные настройки.
Логи следует периодически очищать, чтобы не перегружать таблицу. По достижении 1000 записей в логах, система выдаст уведомление о необходимости очистки таблицы.
Проверка отправки писем через модуль «Отправка почты через SMTP»
Перед включением модуля, обязательно проверьте отправку писем вручную.
Если есть ошибки, система уведомит об этом:
Ошибки можно посмотреть в журнале операций, если активированы соответствующие настройки:
Также обязательно проверьте автоматическое отправление писем. Например, путем оповещения своей учетной записи в карточке пользователя.
На Bitrix Env 4.2 крутятся две редакции битрикс (Стандарт и Бизнес) и на каждой редакции крутится по два сайта.
с почтой на сайтах редакции Стандарт есть проблемы:
Уж не знаю в правильном ли направлении ищу проблему, но в etc/cron.d
добавил файл с произвольным названием
в него добавил строчку
В настройках msmtp (файл /home/bitrix/.msmtprc) по умолчанию все шлется через аккаунт default
- ‘--account=account’
Use the given account. Command line settings override configuration file settings. - ‘--host=hostname’
Use only the settings from the command line; do not use any configuration file data. - ‘--from=address’ or ‘--read-envelope-from’
Choose the first account from the system or user configuration file that has a matching envelope-from address as specified by a ‘from’ command. This works only when neither ‘--account’ nor ‘--host’ is used.
указать в php.ini конкретный аргумент для msmtp, а именно прописал строку:
sendmail_path = msmtp --account=site2 -t -i
но все равно шлет через дефолтный аккаунт,
может не там передаю параметр --account=site2 ?
аккаунт можно передать через настройки главного модуля, в поле "Дополнительный параметр для передачи функции mail"
У вас с одного сайта письма уходят, а с другого не уходят. Причем здесь msmtp и настройки сервера?
На вашем втором сайте, скорее всего, включена отправка почты на агентах, уберите строчку define("BX_CRONTAB_SUPPORT", true); и отправляйте на агентах.
Добавка в конфиг msmtp еще одного аккаунта, например:
позволило слать почту через msmtp с нескольких сайтов и с разных почтовых ящиков
в файле /home/bitrix/.msmtprc
сделал записи
to Дмитрий Данилов
Спасибо, этот вариант работает отлично!
Если раньше это работало, то сейчас нет. При отправки с любой почты Битрикс будет подставлять почту последнюю в списке.
Решили это следующим образом:
1. Настроили аккаунты таким образом:
2. Добавили функцию custom_mail(для удобства разбил на несколько функций) в init.php:
В итоге если функция находит почтовый ящик в аккаунтах, то отправляет с него, если не находит, то отправка идет с ящика по умолчанию, а поле From заголовка письма подменяется почтой пользователя в Битрикс.
vip6,Добрый день. Не могли бы подробней рассказать куда и в каком виде вставлять Вашу функцию для почты. У меня BitrixVM.CRM, и я никак не могу заставить ее слать письма с одного сайта но с разных почтовых ящиков. При вставке Вашей функции в /home/bitrix/www/bitrix/php_interface/init.php ровным счетом ничего не происходит, письма не улетают, даже логов нет. Не могу понять где и на чем я споткнулся. Заранее спасибо!
Если раньше это работало, то сейчас нет. При отправки с любой почты Битрикс будет подставлять почту последнюю в списке.
Решили это следующим образом:
1. Настроили аккаунты таким образом:
2. Добавили функцию custom_mail(для удобства разбил на несколько функций) в init.php:
Подскажите, а что нужно чтобы научить коробку слать письма с одного stmp сервера (я.коннект), но в заголовки from подставлять почты пользователей?
облако так умеет
Дмитрий Б, Yandex со средины месяца такое поведение запрещает и будет вас принимать как спамера. Облако в корне отличается от коробки) Наверно поднять свой почтовый сервер.
Цитата |
---|
Алексей Шафранский написал: Дмитрий Б , Yandex со средины месяца такое поведение запрещает и будет вас принимать как спамера. Облако в корне отличается от коробки) Наверно поднять свой почтовый сервер. |
Есть свой сервер, подключаюсь по IMAP у каждого пользователя, все равно отправка через 1 основной ящик.
Как можно настроить, что бы отправлял каждый пользователь со своего ящика?
(Настроено 100 ящиков, отправка с одного)
Если раньше это работало, то сейчас нет. При отправки с любой почты Битрикс будет подставлять почту последнюю в списке.
Решили это следующим образом:
1. Настроили аккаунты таким образом:
2. Добавили функцию custom_mail(для удобства разбил на несколько функций) в init.php:
Здравствуйте, подскажите, пожалуйста как данные функции запускаются, не увидел чтобы они запускались как обычно к примеру custom_mail ( $to , $subject , $body , $headers );
или они как-то по другому запускаются?
Цитата |
---|
Дмитрий Б написал: Подскажите, а что нужно чтобы научить коробку слать письма с одного stmp сервера (я.коннект), но в заголовки from подставлять почты пользователей? облако так умеет |
Верно ниже ответили, подмена - верный путь к спаму, в облаке можно использовать для каждого ящика свой SMTP. Решение - скрипт, что я выкладывал ранее или свой smtp сервер. Но в скрипте придется каждый адрес прописывать отдельно.
Цитата |
---|
Vladimir Kalinichenko написал: Есть свой сервер, подключаюсь по IMAP у каждого пользователя, все равно отправка через 1 основной ящик.Как можно настроить, что бы отправлял каждый пользователь со своего ящика?(Настроено 100 ящиков, отправка с одного) |
Настраивайте на сервере с битрикс например ssmtp, подключайтесь к своему серверу и рассылайте письма со всех адресов. Мы сейчас так делаем, все общение менеджеров, автоматизация рассылки по 30-40к адресов, проблем со спамом нет.
Цитата |
---|
Максим Белокуров написал: Здравствуйте, подскажите, пожалуйста как данные функции запускаются, не увидел чтобы они запускались как обычно к примеру custom_mail ( $to , $subject , $body , $headers );или они как-то по другому запускаются? |
У меня такая же ситуация! Прошу помочь!
Цитата |
---|
Дмитрий Виртенбергер написал: vip6 ,Добрый день. Не могли бы подробней рассказать куда и в каком виде вставлять Вашу функцию для почты. У меня BitrixVM.CRM, и я никак не могу заставить ее слать письма с одного сайта но с разных почтовых ящиков. При вставке Вашей функции в /home/bitrix/www/bitrix/php_interface/init.php ровным счетом ничего не происходит, письма не улетают, даже логов нет. Не могу понять где и на чем я споткнулся. Заранее спасибо! |
Цитата |
---|
Гаврил Скрябин написал: У меня такая же ситуация! Прошу помочь! |
Вроде всех интересующихся добавил. Объясню, как решил эту проблему у себя.
Решение только для BitrixEnv сервера.
Заходим на сервер под root'ом.
1.
Сначала смотрим файл /etc/php.d/bitrixenv.ini
Ищем строку: sendmail_path = msmtp -t -i
если строки нету, то добавляем в самом конце.
3.
В файле /home/bitrix/.msmtprc добавляем настройки аккаунтов (можно через меню bitrixenv или вручную: vi /home/bitrix/.msmtprc)
Например пишем настройки такие:
В принципе, этого уже будет достаточно, чтобы сайты на одном сервере отправляли почту с нужных аккаунтов почты, но есть некоторый нюанс, когда почта отправляется с php разработок, где не используют явную папку и тогда настройка для apache не подхватывается. Тут может помочь шаг 4.
4
Заходим в настройки Главного модуля Битрикс сайта, закладка "Почта и СМС" и находим строку "Дополнительный параметр для передачи функции mail:", где в поле надо вписать -a site1.ru (ну или site2.ru.. или как вы по другому указали имя настройки для почты)
Все. После этого вся почта должна работать и отправлять почту с нужных аккаунтов. Лишние скрипты в init.php (где нет еще понятия "сайта" для Битрикса) не нужны.
Если почта не уходит с сайта на битрикс, можно выполнить следующие рекомендации.
Чтобы проверить, создаются и выполняются ли стандартные события, можно зайти в административной части Настройки > Инструменты > SQL запрос и выполнить следующую команду.
Поле SUCCESS_EXEC говорит о том, было письмо передано серверу для отправки, это по сути то, что возвращает стандартная функция php mail, значение "Y" означает "отправлено", "N" - не отправлено, "0" - что по каким-то причинам отправка не была передана функции mail (это может быть также из-за отсутствия почтовых шаблонов для этого события).
Но если в поле SUCCESS_EXEC стоит "Y", а почта все равно не отправляется, можно проверить, отправляется ли почта средствами php (имейте в виду, что на большинстве хостингов то, что находится после собаки в поле From, должно совпадать с доменом вашего сайта):
Рассмотрим основные проблемы, по которым почта может не уходить:
- Неверно указан адрес почты по умолчанию в настройках главного модуля, либо в настройках сайта (если работают несколько сайтов на одном экземпляре битрикс)
- Неверно указан тот же адрес, но уже в настройках хостинга/сервера
- Наличие функции custom_mail (о ней подробнее дальше)
- Наличие обработчиков при добавлении почтовых событий, например, "OnBeforeMailSend", "OnBeforePhpMail"
- Неправильная настройка cron, если включено выполнение агентов на cron (в таком случае можно проверить, не установлены ли константы BX_CRONTAB и BX_CRONTAB_SUPPORT в /bitrix/php_interface/dbconn.php и если да, установить обе в false)
- Наличие константы ONLY_EMAIL, которая позволяет ограничить отправку почты до одного адреса
- Письма могут попадать в спам по причине неправильной настройки сервера для отправки почты или даже по причине некорректной верстки html писем
С диагностикой отправки почты может помочь функция custom_mail, определите ее в "/bitrix/php_interface/dbconn.php", и данные о каждом отправленном письме будут логироваться в папку "/test/":
Также можно логировать все, что отправляется стандартной функцией mail, для этого нужно в файле .htaccess установить следующие строки:
Форма Настройки модуля служит для управления глобальными настройками как сайта в целом, так и каждого модуля в отдельности. Для удобства работы форма разделена на закладки. Каждая закладка содержит логически сгруппированный набор полей, позволяющих выполнять определённые действия по настройке выбранного модуля.
Перейти к форме настройки модулей можно, нажав кнопку Настройки на административной панели, либо из административного меню: Настройки > Настройки продукта > Настройки модулей.
Глобальные настройки модулей системы зависят от характера этих модулей и описаны в соответствующих разделах помощи:
Следующие модули не имеют форм настроек:
- Внешние источники данных;
- Веб-сервисы;
- Дизайнер бизнес-процессов;
- Менеджер идей;
- Компрессия;
- Конструктор отчётов;
- Планёрки и собрания.
Ниже приводится описание настроек Главного модуля.
Форма настройки модуля
Закладка "Настройки"
На данной вкладке выполняется настройка общих параметров Главного модуля.
Функция работает, если включена опция Сохранять исходные имена загружаемых файлов
Только для "Битрикс24 в коробке".
Файл на скачивание с проверкой прав отдаётся с помощью метода CFile::ViewByUser. Если читать файл на php, то это занимает время на бекенде и существенно зависит от размера файла. При включенной опции метод после проверки прав выставляет заголовок X-Accel-Redirect и прекращает работу. Этот заголовок обрабатывается ngnix, который сам считывает указанный файл с диска, освобождая бекенд. При этом дополнительная настройка ngnix не требуется.
Доступно для PHP 5.2.0 и выше
Закладка "Почта и СМС"
Закладка "Авторизация"
Закладка "Журнал событий"
На данной вкладке выполняется настройка параметров журнала событий.
Поле | Описание |
---|---|
Сколько дней хранить события | Указывается период времени (количество дней), в течении которого события будут храниться в журнале. |
События для записи в журнал | |
Записывать [тип события] | Отметьте флажками события, которые должны фиксироваться в журнале. |
Профиль пользователя | |
Сохранять историю изменения полей профиля пользователя | Включает логирование изменений профилей пользователей и делает активной страницу Настройки > Пользователи > История профилей. |
Настройки системы авторизации на контроллере* | |
Префикс для авторизации на контроллере | Указывается префикс, который будет использоваться для авторизации пользователей контроллера на этом подчиненном сайте. |
Авторизовывать на этом сайте пользователей других сайтов контроллера | При отмеченной опции пользователи других сайтов контроллера смогут авторизовываться на этом сайте, причем обязательно должна быть разрешена авторизация между подчиненными сайтами на контроллере и настроено соответствие групп. |
* - данная секция доступна, если сайт подключен к контроллеру.
Закладка "Система обновлений"
- Не проверять;
- Каждый день;
- Раз в неделю;
- Раз в месяц.
Закладка "Доступ"
На закладке выполняется настройка прав доступа групп пользователей к управлению ресурсами Главного модуля.
- [D] Доступ закрыт - запрет на доступ;
- [P] Изменение своего профайла - право на просмотр и изменение собственного профайла;
- [R] Просмотр всех данных модуля - доступ к просмотру файлов модуля без права на изменение;
- [T] Просмотр всех данных модуля и изменение своего профайла - доступ к просмотру файлов модуля с правом на изменение собственного профайла;
- [V] Просмотр данных модуля и изменение заданных профайлов - доступ к просмотру файлов модуля с правом на изменение указанных профайлов;
Служебные процедуры
Закладка "Публичная часть"
Форма предназначена для ограничения доступа посетителей к сайту, например, на время выполнения технических работ.
С помощью кнопки Закрыть доступ пользователей/Открыть доступ для всех посетителям может быть разрешен или запрещён доступ к публичной части сайта.
Контроллер
Смотрите также:
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Не редкость что у пользователей или начинающих программистов после установки продукта по каким то непонятным причинам не происходит отправка писем из 1С-Битрикс.
Перед тем как приступать к устранению попробуйте проверить отправляется ли почта через функцию php, mail. Проверить можно в левом меню Настройки -- Инструменты -- Командная PHP-строка. В текстовом поле введите примерно следующее.
$headers = "From: test@". $_SERVER['HTTP_HOST'] . "\r\n" .
"Reply-To: test@". $_SERVER['HTTP_HOST'] . "\r\n" .
"X-Mailer: PHP/" . phpversion();
if( mail("mymail@mydomain.ru","my test theme","my test message",$headers) )
echo "Почта работает!";
>else
echo "Почта не работает! Скорее всего проблема в sendmail";
>
Как правило на это есть всего несколько основных причин.
Вторая причина: Виноват ваш хостинг. Либо стоит ограничение на количество отправки писем в час/сутки либо на хостинге не верно указан отправитель. Вариантом исправления может быть далеко не один. Мы расскажем вам о паре вариантов в ОС Linux Debian.
Первый если у вас установлен ispmanager (так же подходит для тех у кого виртуальный хостинг) отредактируйте файл /var/www/USER/data/php-bin/.php.ini если в нем нет строки sendmail_path = "/usr/sbin/sendmail -t -i -f mymail@mydomain.ru" добавьте ее mymail@mydomain.ru измените на ваш реальный почтовый ящик (существующий).
Второй у вас голый сервер т.е. только консоль. То выясните в каком режиме работает ваш сайт. К примеру если в режиме CGI, fastCGI то отредактируйте файл /etc/php5/cgi/php.ini. Найдите в этом файле строку sendmail_path как показано на рисунке
раскомментируйте sendmail_path и исправьте ее как в первом варианте на sendmail_path = "/usr/sbin/sendmail -t -i -f mymail@mydomain.ru". Сохраните и перезапустите apache.
Третья причина: Пожалуй самая глупая. Не выбран сайт в почтовом шаблоне Битрикс, на рисунке все четко показано.
Необходимо просто поставить галочку и сохранить почтовый шаблон.
Почтовые шаблоны находятся в левом меню Настройки -- Настройки продукта -- Почтовые события -- Почтовые шаблоны. Обязательно проверьте что бы на необходимых шаблонах был выбран ваш сайт.
Читайте также: