Php отправка email: Отправка почты средствами PHP / Хабр

Содержание

php — Отправка html писем

Задать вопрос

Вопрос задан

Изменён 4 года 11 месяцев назад

Просмотрен 18k раз

Объясните, пожалуйста, почему html письмо не приходит в должном формате.

mail(
    '[email protected]',
    'Письмо из скрипта',
    '<html><body>Привет Василий, как дела?<br />Я умею отправлять письма с помощью php! И скоро научусь отправлять письма с помощью php с вложениями! Это будет круто!</body></html>',
    "From: [email protected]\r\n
    Content-type: text/html; charset=utf-8\r\n
    X-Mailer: PHP mail script"
)

На почту сообщение приходит в след. виде:

Content-type: text/html; charset=utf-8
X-Mailer: PHP mail script
<html><head><title>Вася, привет</title></head><body bgcolor="#feeffe"><font color="blue">Привет Василий, как дела?</font><br /><font color="green">Я умею отправлять письма с помощью php! И скоро научусь отправлять письма с помощью php с вложениями! Это будет круто!</font></body></html>
  • php
  • html

2

Форматирование неверное.

mail(
    '[email protected]',
    'Письмо из скрипта',
    '<html><body>Привет Василий, как дела?<br />Я умею отправлять письма с помощью php! И скоро научусь отправлять письма с помощью php с вложениями! Это будет круто!</body></html>',
    "From: [email protected]\r\n"
    ."Content-type: text/html; charset=utf-8\r\n"
    ."X-Mailer: PHP mail script"
)

Вот так попробуйте. Просто, перед Content-type и X-Mailer не нужные пробелы..

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Отправка писем через вебсервер — help.

zone.eu

Общее

Если Вы используете виртуальный сервер Zone для хостинга сайта и хотите отправлять письма со своего веб-сайта, обратите внимание, что порты 25, 1025, 1026, 465 и 587 закрыты. Следовательно, вы не можете использовать сервер smtp.zone.eu или любой другой сервер, который использует вышеупомянутые порты.

Для отправки писем через ваш веб-сайт, в качестве имени хоста SMTP должен быть указан localhost и должен использоваться порт 25. Аутентификация или безопасное соединение (SSL / TLS) не требуется и для этих параметров должно быть указано false или none.

Пример SMTP настроек PHP-скрипта:

$mail->Mailer = "smtp"; 
$mail->Host = "localhost";
$mail->Port = "25"; $mail->SMTPSecure = 'none'; $mail->SMTPAuth = false;

Настройка Laravel выглядит так:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

Ограничения по отправке

Вы можете отправлять одно письмо каждые пять секунд. Если вы превысите этот лимит, отправка писем будет ограничена. Для снятия ограничения, свяжитесь с нашей службой поддержки клиентов по адресу [email protected].

SPF

При отправке писем с вашего веб-сервера убедитесь, что запись SPF вашего домена это позволяет. В противном случае письмо будет помечено как спам или вообще не будет доставлено.

Если ваш домен использует только почтовые услуги Zone, запись SPF должна выглядеть так:

v=spf1 a mx include:_spf.zone.eu -all

Если ваш веб-сайт хостится у нас, но вы пользуетесь почтовыми услугами другого провайдера, то запись SPF необходимо дополнить. Достаточно добавить include: _spf.zone.eu в запись SPF вашего домена. Например так:

v=spf1 ip4:123.4.5.6 include:_spf.zone.eu -all

DKIM

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

Чтобы активировать запись DKIM, войдите в «Мой Zone» и выберите Виртуальные серверы -> Э-почта.

Изменение PHP sendmail_from

По умолчанию письма вашего веб-сервера отправляется с адреса электронной почты веб-сервера по умолчанию [email protected]. Это можно изменить с помощью пятого параметра функции PHP mail() -f.

Изменить адрес по умолчанию @vserver.zonevs.eu, можно войдя в «Мой Zone» и выбрав Виртуальный сервер-> Веб-сервер-> Настройки главного домена-> Изменить-> Настройки PHP.

 

В открывшемся окне измените значение sendmail_from. Необходимо ввести только электронный адрес в формате [email protected].

 

Электронная почта

Изменить эту страницу или внести предложение

В этой главе объясняется, как отправляются электронные письма в OJS, OMP и OCS; доступные параметры конфигурации; и как устранять проблемы с электронной почтой.

Почта в программных приложениях PKP использует библиотеку PHPMailer. Вы можете узнать больше о PHPMailer на их вики. Другой код, связанный с почтой, можно найти в почтовом классе pkp-lib.

Записи об отправленных электронных письмах хранятся в email_log таблица базы данных.

Программные приложения PKP предоставляют ряд опций для настройки электронной почты для работы в вашей среде. Следующие параметры конфигурации доступны для электронной почты в config.inc.php :

 ;;;;;;;;;;;;;;;;;;
; Настройки электронной почты ;
;;;;;;;;;;;;;;;;;;
[электронная почта]
; Используйте SMTP для отправки почты вместо mail()
; смтп = вкл.
; Настройки SMTP-сервера
; smtp_server = mail.example.com
; смтп_порт = 25
; Включить SMTP-аутентификацию
; Поддерживаемые механизмы: ssl, tls
; smtp_auth = SSL
; smtp_username = имя пользователя
; smtp_password = пароль
; Разрешить указывать отправителя конверта
; (может быть невозможно с некоторыми конфигурациями сервера)
; allow_envelope_sender = Выкл. 
; Отправитель конверта по умолчанию для использования, если ни один из них не указан в другом месте
; default_envelope_sender = мой_адрес@мой_хост.com
; Принудительно использовать отправителя конверта по умолчанию (если есть)
; Это полезно при настройке адреса для неответов на уровне всего сайта.
; Поле для ответа будет установлено с адресом для ответа или от адреса.
; force_default_envelope_sender = Выкл.
; Принудительное соответствие DMARC из заголовка (RFC5322.From)
; Если у кого-либо из ваших пользователей есть адреса электронной почты в доменах, не находящихся под вашим контролем
; вам может потребоваться установить это в соответствии с политиками DMARC, опубликованными
; эти сторонние домены.
; Установка этого параметра переместит адрес пользователя в поле ответа, а
; from будет перезаписан с помощью default_envelope_sender.
; Чтобы использовать это, вы должны установить force_default_enveloper_sender = On и
; default_envelope_sender должен быть установлен на действительный адрес в домене, которым вы владеете.
; force_dmarc_compliant_from = Выкл. ; Отображаемое имя для использования с DMARC-совместимым заголовком ; По умолчанию DMARC-совместимый адрес будет иметь пустое имя, но это может ; изменить, добавив сюда текст. ; Вы можете использовать «%n», чтобы вставить имя пользователя из оригинала из заголовка. ; и '%s', чтобы вставить локализованное название сайта. ; dmarc_compliant_from_displayname = '%n через %s'

Чтобы узнать больше об электронной почте в пользовательском интерфейсе OJS, см. Обучение OJS 3.

Отправка почты #

По умолчанию PHPMailer будет отправлять почту через встроенную в PHP функцию mail() .

В Windows необходимо настроить PHP для отправки электронной почты через SMTP-сервер (работающий либо на том же компьютере, либо на другом компьютере).

На других платформах, таких как Linux и Mac OS X, PHP будет отправлять почту с помощью локального клиента sendmail, поэтому должен быть запущен и настроен локальный MTA, например Sendmail или Postfix, для разрешения исходящей почты.

См. https://www.php.net/manual/en/function.mail.php для получения более подробной информации о настройке функций почты PHP.

Наше программное обеспечение также можно настроить для использования SMTP-сервера, как указано в config.inc.php , с аутентификацией или без нее.

Установка адреса возврата #

Для управления адресом, на который будет отправлено возвращенное электронное письмо, необходимо установить адрес отправителя конверта. Включить опция allow_envelope_sender в разделе [email] конфигурационного файла; когда этот параметр включен, в разделе «Электронная почта» в разделе «Настройка» появляется поле «Адрес возврата».

Обратите внимание, что эта опция может потребовать изменений в конфигурации почтового сервера сервера, чтобы пользователь, от имени которого работает веб-сервер (например, «www-data»), был доверенным для программы sendmail; в противном случае к исходящим сообщениям будет добавляться заголовок «X-Warning». Обратитесь к документации вашего почтового сервера, если исходящие письма содержат такой заголовок.

Например, Sendmail хранит список доверенных пользователей в /etc/mail/trusted-users ; другие почтовые системы используют аналогичные файлы.

Параметр командной строки, используемый для установки отправителя конверта: -f .

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

Повторная загрузка шаблонов отменит все сделанные вами изменения. Чтобы сохранить эти изменения, вам нужно будет сохранить эти изменения локально и повторно добавить их в шаблоны по мере необходимости.

Все приложения PKP требуют, чтобы основные и технические контакты были настроены в разделе «Настройка» для правильной повседневной работы. Это требуется для каждого журнала, прессы или конференции в системе.

  • В OJS 2.x это можно сделать в разделе Шаг 1 настройки .
  • В OCS 2.x это можно сделать в разделе Управление веб-сайтом, шаг 1 .
  • В OJS/OMP 3.x это можно сделать в разделе Настройки > Журнал > Контакт .

OJS предоставляет всем пользователям форму самостоятельной регистрации, которую можно отключить или повторно включить в

Меню администратора > Пользователь и роли > Параметры доступа к сайту > Регистрация пользователя

После включения каждый пользователь может зарегистрироваться и создать учетная запись в Журнале с ролью читателя, автора и/или рецензента; тем не менее, пользователи нередко создают спам-аккаунты, которые загромождают список законных пользователей и увеличивают нагрузку на редакторов журналов по проверке этих учетных записей и очистке их вручную.

Массовое создание спам-аккаунтов можно сократить с помощью двух настроек в config. inc.php :

 ; Если этот параметр включен, адреса электронной почты должны быть подтверждены перед входом в систему.
require_validation = Выкл.
; Максимальное количество дней до истечения срока действия неподтвержденной учетной записи и ее удаления
валидация_таймаут = 14
 

Первый параметр — require_validation , для которого по умолчанию установлено значение Off . Если установлено значение On , этот параметр потребует, чтобы каждый новый пользователь активировал свою учетную запись, прежде чем он сможет полноценно использовать систему.

Второй параметр — validation_timeout , который по умолчанию имеет значение 14 . Этот параметр работает только при включенном параметре require_validation и означает, что у пользователя есть 14 дней на активацию новой учетной записи, иначе учетная запись будет автоматически удалена из системы по истечении срока.

Настройка системы для использования Gmail SMTP #

Чтобы использовать Gmail SMTP для отправки электронной почты из OJS, вы можете использовать следующие настройки в config. inc.php .

Для OJS 2.x:

 ; Используйте SMTP для отправки почты вместо mail()
смтп = вкл.
; Настройки SMTP-сервера
smtp_server = "ssl://smtp.gmail.com"
smtp_port = 465
; Включить SMTP-аутентификацию
smtp_auth = ПРОСТОЙ
smtp_username = "пользователь@gmail.com"
smtp_password = "пароль"
 

Для OJS 3.x:

 ; Используйте SMTP для отправки почты вместо mail()
смтп = вкл.
; Настройки SMTP-сервера
smtp_server = smtp.gmail.com
smtp_port = 465
; Включить SMTP-аутентификацию
smtp_auth = SSL
smtp_username = "пользователь@gmail.com"
smtp_password = "пароль"
 

Дополнительную информацию о Gmail SMTP можно найти на странице https://support.google.com/a/answer/176600?hl=ru.

Обратите внимание, что вам может потребоваться дополнительная настройка паролей для приложений в Gmail; подробности см. на странице https://support.google.com/accounts/answer/185833?hl=ru.

Проблемы с SPF и DMARC #

Структура политики отправителя (SPF) #

Структура политик отправителей (SPF) зависит от разрешения, которое сервер, на котором может работать OJS, получает от другого сервера, на котором размещен основной домен. Это разрешает серверу OJS отправлять электронные письма с использованием этого домена и предотвращает блокировку сообщений.

SPF требуется, когда ваша установка OJS выполняется на сервере, отличном от вашего основного домена, включая субдомен; Например, когда вы размещаете журнал, расположенный по адресу journal.domain.com, на сервере, расположенном за пределами учреждения, в котором размещен domain.com.

В этой ситуации вам придется попросить своих сотрудников ИТ-службы включить запись TXT в вашей зоне DNS, которая разрешает отправку электронных писем и уведомлений от имени @domain.com. Ниже приведен пример возможного сценария, в котором требуется запись SPF:

Сервер с запущенным OJS:

 IP: 10.10.10.10
Имя сервера: myojsserver.com (это не ваш домен, а только имя сервера, которое определяется вашим поставщиком хоста OJS)
 

Этот сервер должен быть включен в вашу зону DNS как запись SPF TXT. В этом случае вам нужно будет добавить следующее:

 Имя: пусто или установлено на @ (в зависимости от инструкций вашего регистратора домена)
Тип: ТХТ
Значение: v=spf1 ip4:10. 10.10.10 a:myojsserver.com ~все
 

Если у вас уже есть запись TXT в зоне DNS, вам потребуется объединить ее, чтобы сохранить только одну запись TXT. Должна быть только одна запись DNS TXT.

Аутентификация, отчетность и соответствие сообщений на основе домена (DMARC) #

Хотя SPF предоставляет OJS возможность отправлять электронные письма с использованием обратного пути или конверта электронной почты, содержащего адрес электронной почты с доменом, отличным от того, на котором размещен сервер OJS, бывают случаи, когда OJS может отправлять электронную почту от имени пользователей, которые используйте домены, для которых вы не можете настроить запись SPF. Хороший пример — Gmail: если у администратора [email protected] адрес, вы не сможете заставить Google добавить нас в качестве записи SPF.

DMARC решает эту проблему, помещая адрес электронной почты пользователя в адрес для ответа: и помещая default_envelope_sender в поле From: . Начиная с OJS 3.1.2, вы можете настроить это с помощью двух новых параметров в файле config.inc.php , а именно force_dmarc_compliable_from и dmarc_compliable_from_displayname . (Если вы используете OJS 3.1.2+ и не видите эти параметры в своем файле конфигурации в режиме реального времени, вам следует просмотреть свои config.TEMPLATE.inc.php и перемещайте их по мере их появления там.)

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

Если пользователь не может найти никаких записей о том, что электронная почта отфильтровывается как спам или нежелательная почта, вы можете столкнуться с Проблема с проверкой Sender Policy Framework (SPF) на их сервере. Вы можете подтвердить это, просмотрев журнал почты вашего сервера, чтобы увидеть, есть ли какие-либо сообщения о блокировке/возврате получения с ошибками проверки SPF в результате.

Объяснение и решение #

Начиная с версии 2.4.6, OJS включает изменение способа отправки электронных писем. Раньше все электронные письма отправлялись с использованием адреса электронной почты пользователя OJS в поле «ОТ». К сожалению, это привело к некоторым проблемам с тем, что исходящие электронные письма журнала помечались некоторыми почтовыми серверами как «поддельные», поскольку рассматриваемые адреса электронной почты (например, [email protected]) не соответствовали доменному имени сервера, отправляющего электронную почту. (например, «myjournal.com»). (Технически электронные письма не прошли проверку Sender Policy Framework (SPF).) Пометка таким образом более серьезна, чем признание спама: во многих случаях принимающий почтовый сервер даже не назначит электронное письмо в очередь спама / нежелательной почты. , вместо того, чтобы просто отказаться от него.

Решение 1 (OMP, OJS) #

Чтобы этого не произошло, команда разработчиков PKP приняла метод уведомления по электронной почте, аналогичный другим веб-приложениям, таким как WordPress: отправляйте всю электронную почту из системы, используя один центральный адрес электронной почты в поле «ОТ», с предполагаемыми получателями. адрес электронной почты в поле «ОТВЕТ». Центральный адрес электронной почты, который будет использоваться по умолчанию, будет указан в Настройка журнала Шаг 1.2: Основное контактное лицо , которое должно совпадать с именем домена, с которого журнал отправляет почту. (Если этот адрес электронной почты не может соответствовать домену отправителя для каждого журнала, альтернативный адрес электронной почты можно настроить на уровне сайта с помощью файла OJS config.inc.php). Кроме того, в Шаг 1.4 настройки журнала: Идентификация электронной почты была предоставлена ​​новая настройка «Заголовок электронной почты», которую можно использовать для предоставления пояснительного текста получателю.

Чтобы правильно настроить это, мы предлагаем следующее:

  • Если вы еще не используете OJS 2.4.6+, выполните обновление.
  • Настройте адрес электронной почты, который OJS будет использовать для отправки всей электронной почты, используя параметр «Основное контактное лицо» в настройке журнала, шаг 1.2.
    • Если возможно, ваш адрес электронной почты основного контактного лица должен служить основным контактным лицом для журнала и должен совпадать с доменным именем журнала. Например, если ваше доменное имя «hypothesisjournal.com», попробуйте использовать адрес электронной почты, например «[email protected]».
  • Введите пояснительный текст, используя параметр «Заголовок электронной почты» в настройке журнала, шаг 1.4. Этот текст будет отображаться в верхней части каждого электронного письма, сгенерированного системой. Помните, что эти электронные письма обычно являются уведомлениями для пользователей и должны рассматриваться так же, как и электронные письма с уведомлениями из других систем. Мы рекомендуем следующий текст:
 Вы получили это письмо от имени <имя-журнала>. В случае запроса ответа вы можете ответить непосредственно на это электронное письмо.
 
Решение 2 (OCS, а также OJS и OMP) #

Настройте установку для использования службы SMTP GMail. Дополнительную информацию см. в разделе выше, посвященном SMTP.

Afterlogic WebMail Lite PHP

Нажмите, чтобы увидеть скриншоты

  • Открытый исходный код и бесплатно

    Установите его на свои веб-серверы для личного или коммерческого использования, распространяйте, интегрируйте с другим программным обеспечением или изменяйте исходный код (при условии, что вы поделитесь своими изменениями с сообществом). Бесплатно.

  • Полнофункциональный

    Минималистичный интерфейс сочетается с богатым набором функций, здесь нет компромиссов. Создан на основе новейших технологий HTML5 и CSS3.

  • Средство просмотра документов Microsoft Office

    Эта функция использует онлайн-средство просмотра, предоставляемое непосредственно веб-сайтом Microsoft. На данный момент в список поддерживаемых документов входят: doc, docx, docm, dotm, dotx, xlsx, xlsb, xls, xlsm, pptx, ppsx, ppt, pps, pptm, potm, ppam, potx, ppsm.

  • Аутентификация через внешние службы

    Пользователи могут добавлять свои учетные записи Google, Facebook и Dropbox к учетным записям электронной почты, что позволяет им входить в WebMail Lite без ввода учетных данных электронной почты.

  • Структура подключаемых модулей и API для бесшовной интеграции

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

  • Двойное лицензирование

    Доступно в рамках AGPL для сообщества открытого исходного кода или по коммерческой лицензии по запросу.

  • Безопасный

    Может работать на защищенном HTTPS-сервере и обмениваться данными с почтовым сервером через SSL-соединение.

  • OpenPGP

    Шифруйте, подписывайте, расшифровывайте и проверяйте электронную почту прямо в браузере. Вся криптография происходит прямо в браузере, на сервер не отправляются ни ключи PGP, ни расшифрованные данные.

  • Локализации

    Более 30 языков, поддержка интерфейса с написанием справа налево (для иврита и арабского языка), форматы даты и времени.

Нужно больше?

Нужна поддержка коммерческого уровня, регулярные исправления ошибок,
и расширенные функции, такие как мобильная версия, персональный календарь,
несколько учетных записей IMAP для каждого пользователя (с единым ящиком входящих) и многое другое?
Стань профессионалом!

Документация

Системные требования

Система отслеживания ошибок

Форум сообщества

Блог

Информация о лицензировании

Предложить функцию

Дополнительные функции

  • Плагин Notes для почтового модуля с поддержкой синхронизации Apple Notes
  • Идентификационные данные с подписями
  • поддержка)
  • Пользователи могут менять пароль прямо из веб-почты через POPPASSD
  • Поддержка квот почтового ящика IMAP
  • Могут открывать вложения winmail. dat / MS-TNEF и .zip
  • Перетаскивание вложений из и
    в веб-почту
  • Обработка почты (с поддержкой IMAP THREAD)
  • Поиск почты в нескольких папках
  • Миниатюры предварительного просмотра вложений
  • Пользовательский интерфейс на основе шаблонов для простоты настройки

    И еще десятки…

    Работает с вашим почтовым сервером

    Exim, Postfix, Courier, Dovecot, Sendmail, Qmail и многие другие.

    Microsoft Exchange, MailEnable, IceWarp, MDaemon, hMailServer и многие другие.

    Исходный код =>

    Соответствует требованиям хостеров и телекоммуникационных компаний

    Архитектура системы WebMail Lite совместима с реализациями кластера высокой доступности.
    Программное обеспечение оптимизировано для работы при больших нагрузках и поддержки большого количества почтовых ящиков.

    Нужна специальная поддержка для вашей веб-почты? Свяжитесь с нами

    Нужны профессиональные услуги?

    Получите приоритетный доступ к команде разработчиков WebMail Lite, которая поможет вам с брендингом, интеграцией, развертыванием, пользовательской разработкой и премиальной поддержкой продукта.

    More Info

    Our clients

    AirBus

    Alcatel-Lucent

    AOL

    AT&T

    Bechtel

    Bell Mobility

    Berkeley University

    Bosch

    British Transport Police

    Carnegie Mellon University

    Centers for Контроль и профилактика заболеваний

    ЦЕРН

    Палата депутатов

    Cisco Systems

    Datawatch

    Эдинбургский университет

    Федеральное государственное учреждение Российская государственная библиотека

    Freescale Semiconductor

    Fuji Xerox

    General Electric

    Go Daddy

    Правительство Саскачевана, Канада

    Правительство

    HITACHI

    IBM

    Intuit Inc.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *