все способы связи
и решения проблем
Многоканальный телефон: (495) 989-1540, бесплатно по россии: 8-800-555-1540
 
Начало О проекте Цены Регистрация
поиск  
  На главную

Отправка почтовых сообщений с сайта

Вступление

Помните: рассылка спама и других сообщений, которые могут быть приняты за спам, запрещена. Для того, чтобы оградить себя и других пользователей хостинга от проблем и недоразумений, ознакомьтесь со следующими документами:

Общая идея отправки писем с сайта

  • Обратный адрес письма (поле FROM) должен быть зарегистрированным ящиком или псевдонимом на нашем хостинге. Иначе письмо не дойдет.
  • У вас почта где-то еще (mail.ru и так далее)? Создайте бесплатную пересылку (псевдоним) имя@домен-на-хостинге -> ваш-ящик@mail.ru (или аналогично), после этого отправка и от ящика имя@домен-на-хостинге, и от ящика ваш-ящик@mail.ru (или аналогично) будет работать.
    Также посмотрите комментарий ниже!
  • Для PHP работает стандартная функция mail(), ничего настраивать не нужно, кроме обратного адреса по схеме выше.
  • Для других языков программирования или систем, нужно использовать SMTP сервер robots.1gb.ru, порт 25, без авторизации.
  • Примеры для популярных языков программирования приведены далее.

Обратный адрес почты ваших писем

Последнее время набирает популярность технология DMARC, которая описана, например, тут:
https://habrahabr.ru/company/mailru/blog/282602/.

Краткая суть в том, что если у вас есть обратный адрес в домене mail.ru (как пример), то отправлять почту вы можете ТОЛЬКО с использованием серверов mail.ru, иначе ваша почта будет жестко считаться спамом. К сожалению, ни хостинг, ни mail.ru не предлагает никаких средств отправки почты из сайта с помощью SMTP сервера mail.ru, это не будет нормально работать по множеству разных причин на обоих сторонах.
Это относится не только к mail.ru, провайдер приведен просто как пример.

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

Длинные строки в письмах

Часто допускаемой ошибкой является создание сообщений с большой длиной строк. Такие сообщения могут доходить в искаженном или обрезанном виде.
Особенно часто это правило нарушается при некорректном создании HTML сообщений - перенос строк там кодируется символами <br>, таким образом, символы переноса строк в исходном тексте сообщения могут вообще отсутствовать.

Помните, что по MIME и RFC стандартам, которые используются для передачи почтового сообщения, длина строки сообщения не может превышать 80 символов (ориентировочно). Вам необходимо вставлять переносы строк искусственно, если ваше сообщение содержит длинные строки.

Это относится к кодировке сообщения 8bit, когда тело сообщения передается без кодировки.
В том случае, если тело сообщения кодируется (например, base64), длина итоговых строк может быть любой, но длина строки, используемый для передачи сообщения (т.е. содержащая данные в base64) опять же не может превышать 80 символов.

PHP

Важное замечание: обратный адрес письма должен быть зарегистрированным ящиком на нашем хостинге!
Вы можете воспользоваться стандартной функцией mail(). Будьте осторожны и грамотны при конструировании русских писем!

Письма робота 1Gb.ru отправляются, например, такой функцией:
function _mail ($from, $to, $subj, $what)
{
mail($to, $subj, $what, 
"From: $from
Reply-To: $from
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: 8bit"
);
}

_mail ('suppart@2gb.ru', 'customer@live.com', 'Привет!', 'Дорогой Андрей, пишу вам письмо.');
        ^^^^^^^^^^^^^^  заменить на СУЩЕСТВУЮЩИЙ НА ХОСТИНГЕ обратный адрес
Обратите внимание на переводы строк в строковой константе - они должны присутствовать.
Если вы хотите отправлять HTML письма, вы должны дописать в константу заголовков вместо строки Content-type следующую, например, строку:
Content-Type: text/html; charset=windows-1251

PERL

Важное замечание: обратный адрес письма должен быть зарегистрированным ящиком на нашем хостинге!
Для отправки почты вы можете воспользоваться модулем Net::SMTP.

Пример скрипта выглядит примерно так:
use Net::SMTP;
use POSIX 'strftime';
my $Date = strftime("%a, %d %b %Y %H:%M:%S %z", localtime(time()));
$smtp = Net::SMTP->new('robots.1gb.ru');
$smtp->mail('from@me.ru');
$smtp->to('to@him.ru');
$smtp->data();
$smtp->datasend("From: <support\@1gb.ru>\n");
$smtp->datasend("To: <to\@him.ru>\n");
$smtp->datasend("Reply-To: <from\@me.ru>\n");
$smtp->datasend("Date: $Date\n");
$smtp->datasend("Content-Type: text/plain; charset=windows-1251\n");
$smtp->datasend("Content-Transfer-Encoding: 8bit\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message!\n");
$smtp->dataend();
Советуем почитать об этом более подробно в описании PERL-а.

ASP

Важное замечание: обратный адрес письма должен быть зарегистрированным ящиком на нашем хостинге!
Важно: Из-за многочисленных технических проблем, недоразумений и сложностей в работе мы не рекомендуем и не поддерживаем использование отправки сообщений с помощью CDONTS.

Вариант 1.
Рекомендуем пользоваться компонентой Persits.MailSender (AspEmail), которая установлена на всех наших серверах. Для отправки используйте SMTP сервер robots.1gb.ru.
Пример использования на нашем сервере:
<%
set mm = Server.CreateObject("Persits.MailSender")
	mm.Host = "robots.1gb.ru"
	mm.From = "support@1gb.ru"
	mm.FromName = "1Gb support"
	mm.AddAddress "dmih@in-solve.ru"
	mm.AddCustomHeader "Content-Type: text/plain; charset=windows-1251"
	mm.AddCustomHeader "Content-Transfer-Encoding: 8bit"
	mm.Subject = "Тестовое сообщение"
	mm.IsHTML = 0

	mm.Body = "Тестовое сообщение (по-русски)"
	mm.Send
%>
Документацию по этому компоненту можно прочитать здесь.

Вариант 2.
Для совместимости мы также предоставляем поддержку SMTPRus 2.1, которая также установлена на наших серверах.
Не рекомендуем вам пользоваться этим объектом, т.к. он сильно устарел и не обеспечивает надежной работы. Было замечено, что часто вместо отправки письма происходит ошибка (500 ошибка сервера IIS), вызванная несовместимостью объекта с современными программными средами.
Авторскую инструкция к SMTPRus можно прочитать здесь.

ASP .NET

Важное замечание: обратный адрес письма должен быть зарегистрированным ящиком на нашем хостинге!
Для отправки используйте SMTP сервер robots.1gb.ru. Вы можете использовать стандартную функциональность объекта System.Web.Mail:
System.Web.Mail.MailMessage m = new System.Web.Mail.MailMessage();
m.From = from;
m.To = to;
m.Subject = subject;
m.Body = what;
m.BodyFormat = System.Web.Mail.MailFormat.Text;
m.BodyEncoding = System.Text.Encoding.GetEncoding("windows-1251");

System.Web.Mail.SmtpMail.SmtpServer = "robots.1gb.ru";
System.Web.Mail.SmtpMail.Send (m);
Важно: При явной ошибке в адресе или любых других ошибках генерируется исключение с комментарием 'SendMessage() failed: Could not access 'CDO.Message' object.', которое не следует воспринимать как общую системную ошибку. Это всего лишь ошибка при отправке конкретного сообщения.

Parser 3.x

Важное замечание: обратный адрес письма должен быть зарегистрированным ящиком на нашем хостинге!
SMTP сервер уже настроен, для отправки сообщений достаточно написать следующее:
^mail:send[
   $.charset[koi8-r]
   $.from[Поддержка <support@1gb.ru>]
   $.to[Адресат <to@him.ru>]
   $.subject[Тестовое сообщение]
   $.text[Текст тестового сообщения]
]
Подробнее о технологии Parser на нашем хостинге можно почитать здесь.

 

Где искать информацию

  • База знаний хостинга 1Gb.ru
    Здесь вы можете найти ответы на часто задаваемые вопросы программирования, совместимости, использования хостинга.
  • 1GbWiki - библиотека различных полезных документов по хостингу
    Наши сотрудники и клиенты составили исчерпывающее описание всех нюансов хостинга и связанного с ним веб-программирования.

Самые популярные темы для программистов

Другие документы

 

Мы всегда готовы ответить на ваши вопросы!
 

 

 

 

 
   
 
Наверх     
© 2002-2017 In-Solve
лицензии № 100858, 100731
как получить поддержку