Надсилання листів з Javascript, і один із способів «Повідомити про опечатке на сайті»

І сьогодні нам не знадобиться серверна частина. Ми будемо відправляти листи прямо з браузера користувача, і грунтуючись на даному способі ознайомимося з невеликим (12 Кб) jQuery плагіном, який вийшов вільним аналогом orphus-у.

Уявляю вашій увазі код відправити email, працює у всіх сучасних браузерах, що складається з декількох рядків Javascript! Базується він на mandrillapp.com API, використовуючи кросдоменный ajaxзапит. Іншими словами, ви використовуєте API для відправки листів зі своєю html-сторінки, не використовуючи жодної код на сервері.

Ось приклад:

var xmlhttp = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open('POST', 'https://mandrillapp.com/api/1.0/messages/send.json');
xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) alert('Mail sended!')
else if(xmlhttp.status == 500) alert('Check apikey')
else alert('Request error');
}
}
xmlhttp.send(JSON.stringify({'key': 'YourApiKeyIsHere',
'message': {
'from_email': 'mail_from@write.here',
'to': [{'email': 'mail_to@write.her', 'type': 'to'}],
'autotext': 'true',
'subject': 'Yeah!',
'html': '<h1>Its work!</h1>'
}}));


Для того, щоб цей приклад запрацював необхідно отримати свій API Key. Для цього реєструємося в сервісі, ліземо в налаштування, і тиснемо велику синю кнопку "+ New API Key". Отриманий ключ підставляємо в приклад вище, зазначаємо адреси відправника і одержувача, і вуаля! Сервіс використовує тільки https, має масу настройок, включаючи чорні і білі списки.
Квота становить 12,000 повідомлень в місяць (295 в годину) на один аккаут.

Плагін «Повідомити про опечатке на сайті»

Простий велосипед, який реалізує можливість відправити повідомлення про те, що на сайті має місце бути очепятка і помилка, використовуючи як наведений вище механізм, так і традиційний — ajax запит до php скрипту, який відправляє повідомлення. Про плюси мінуси буде сказано у висновку до цього посту, а зараз кілька слів про самому плагіні:

  • Використовується бібліотека jQuery;
  • Комплектується php-скриптом для відправки листів (якщо використання першого методу з яких-небудь причин неможливо або неприйнятно);
  • Ініціалізується один раз, і просто чекає натискання «Ctrl» + «Enter» при виділеному тексті;
  • Текст усіх повідомлень що бачить користувач — настроюється, і вказується в момент ініціалізації плагіна. Це дозволяє без будь-яких проблем вбудувати цей плагін на багатомовні сайти;
  • Ніяких додаткових css, js, або картинок (останні є, але підвантажуються з imgur.com) не потрібно для роботи;
  • Є можливість використовувати свої стилі і свою верстку;
  • Додаткові налаштування інтерфейсу;
  • Є набір callback-функції.



Картинка кликабельна і веде на демку з описом, з якою, при необхідності, можна завантажити вихідні коди.

Мінімальний приклад для запуску плагіна буде:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/tarampampam/jquery.textmistake/master/src/jquery.textmistake.js"></script>
<script type="text/javascript">
(function(e){
jQuery(document).textmistake({
'mailTo': 'your_email(d0g)here.com'.replace(/\(d0g\)/, '@'),
'mailFrom': 'textmistake(d0g)yourdomain.com'.replace(/\(d0g\)/, '@'),
'mandrillKey': 'HereIsYourMandrillApiKey', // Get your - https://mandrill.com/signup/
});
})(jQuery)
</script>

Всі інші деталі, демо і опис, як було сказано вище — ви знайдете на сторінці плагіна. Плагін ще трохи сирої, обкатаний тільки одним проектом, тому буду радий будь-якої конструктивної критики, залишеної тут.

Висновок

  • Якщо ви відкриваєте можливість відправки повідомлень на поштову скриньку — робіть це для обмеженої групи осіб (редактурі), і лише на тестовий період. Давати анонимусам можливість відправки листів кому завгодно, вказуючи довільного відправника, c html в повідомленнях, та «підписаних» твоїм ключем — крайня дурість;
  • Навіть під час тестового періоду не використовуйте адресу пошти у відкритому вигляді (роботи не сплять). Як мінімум замінюйте
    textmistake@yourdomain.com
    на
    'textmistake(d0g)yourdomain.com'.replace(/\(d0g\)/, '@')
    ;
  • Т. к. повідомлення можуть містити html — не забувайте про ймовірність xss. Використовуйте «правильні» поштові хостинги. При використанні в якості серверної частини php скрипта всі html-сутності вирізаються за замовчуванням (
    return htmlspecialchars(strip_tags($text))
    ), але захист лише від очевидних спроб xss.


Ліцензія MITCopyright © 2014 Samoylov Nikolay

Дана ліцензія дозволяє особам, що одержали копію даного програмного забезпечення та супутньої документації (надалі іменуються «Програмне Забезпечення»), безоплатно використовувати Програмне Забезпечення без обмежень, включаючи необмежене право на використання, копіювання, зміна, додавання, публікацію, розповсюдження, субліцензування та/або продаж копій Програмного Забезпечення, також як і особам, яким надається Програмне Забезпечення, при дотриманні наступних умов:

Зазначене вище повідомлення про авторське право і ці умови повинні бути включені у всі копії або значущі частини даного Програмного Забезпечення.

ДАНЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ НАДАЄТЬСЯ «ЯК Є», БЕЗ ЖОДНИХ ГАРАНТІЙ, ЯВНО ВИРАЖЕНИХ АБО МАЮТЬСЯ НА УВАЗІ, ВКЛЮЧАЮЧИ, АЛЕ НЕ ОБМЕЖУЮЧИСЬ, ГАРАНТІЇ ТОВАРНОЇ ПРИДАТНОСТІ, ВІДПОВІДНОСТІ З ЙОГО КОНКРЕТНИМ ПРИЗНАЧЕННЯМ ТА ВІДСУТНОСТІ ПОРУШЕНЬ ПРАВ. НІ В ЯКОМУ РАЗІ АВТОРИ АБО ПРАВОВЛАСНИКИ НЕ НЕСУТЬ ВІДПОВІДАЛЬНОСТІ ЗА ПОЗОВАМИ ПРО ВІДШКОДУВАННЯ ШКОДИ, ЗБИТКІВ АБО ІНШИХ ВИМОГ ЗА ЧИННИМИ КОНТРАКТАМИ, ДЕЛІКТІВ АБО ІНШОГО, ЯКИЙ ВИНИК, МАЄ ПРИЧИНОЮ АБО ПОВ'ЯЗАНИХ З ПРОГРАМНИМ ЗАБЕЗПЕЧЕННЯМ АБО ВИКОРИСТАННЯМ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ АБО ІНШИМИ ДІЯМИ З ПРОГРАМНИМ ЗАБЕЗПЕЧЕННЯМ.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.