Відправка e-mail з скриптів

Матеріал з Xgu.ru

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

Скрипти всіляких форумів зазвичай не розраховані на мову, відмінний від англійського, і при використанні їх з російською мовою генерують неправильні повідомлення. Більшість поштових клієнтів навчилися розуміти неправильно сформовані листи, але далеко не все, і тим більше не всі види помилок. Підводні камені можуть чекати де завгодно, та й краще робити програми, що формують листи у відповідності зі стандартами. Поради, дані тут, допоможуть вам відправляти правильні листи на будь-якій мові. Якщо ви побачили тут невідповідність з будь-яким RFC - правте сміливо, або пишіть на сторінку обговорення.

[Ред] Теорія

[Ред] Кодування

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

У тілі листа можна використовувати 8 бітні (НЕ-ASCII) символи, правда з деякими обмеженнями (максимальна довжина рядка.). Тому щоб передати нам не-ASCII текст в незмінному вигляді, його краще закодувати.

Прикріплюються файли (mime, attach) необхідно кодувати в base64, щоб вони були отримані незмінними.

[Ред] RFC

[Ред] Скрипти

[Ред] Відправлення в Perl

Нам знадобляться модулі MIME :: Base64 і Encode, що входять в стандартну поставку Perl ( «Core modules»).

Для кодування заголовків листа (тема, відправник, одержувач) будемо використовувати функцію encode модуля Encode. У неї є спеціальний режим для кодування заголовків листів, при цьому він приймає тільки utf-8.

Отже, підключаємо модуль і кодируем: use Encode qw / encode decode /; my $ Mail_subject = encode ( 'MIME-Header', decode ( 'utf8', 'Тестова тема')); my $ Mail_from = encode ( 'MIME-Header', decode ( 'utf8', 'Тестовий Відправник ')); my $ Mail_to = encode ( 'MIME-Header', decode ( 'utf8', 'Тестовий Одержувач '));

Слід зазначити використання функції decode для приведення тексту до кодуванні utf-8. Навіть якщо текст вашого скрипта вже в utf-8, вам все одно доведеться викликати функцію decode. Про це написано тут.

[Ред] За допомогою Mail :: Sendmail

У керівництві зазначено, що модуль сам додасть зазначені заголовки, якщо вони не будуть задані

[Ред] За допомогою MIME :: Lite

Розділ не написаний.

[Ред] Відправлення в PHP

[Ред] Відправлення в Python

З використанням бібліотеки smtplib

[Ред] Відправлення з оболонки командного рядка

[Ред] За допомогою sendmail

Файл / usr / bin / sendmail багато поштові програми (зокрема, Exim4) ставлять аліасом на себе, обробляючи відправку пошти, і приймаючи більшість прапорів sendmail


Відправлення повідомлення з файлу FILE.eml (формат - звичайне повідомлення пошти, RFC 822):

(Перевірено роботу під FreeBSD від 5 до 8 (sendmail з комплекту поставки), і Debian 6 (стандартний симлінк з sendmail на exim4)):

[Ред] За допомогою mutt

Mutt є консольним поштовим клієнтом (POP3, IMAP), одним з найпотужніших. Також їм зручно відправляти листи з вкладеннями з командного рядка

Потрібно враховувати, що mutt за замовчуванням сам тільки генерує лист, для отравкі він запускає sendmail або еквівалент (налаштовується) приблизно таким же чином, що і в попередньому пункті.

Так, щоб вкладення розумілося поштовим клієнтом саме вкладеним листом, а не текстом, файл вкладення для mutt повинен мати розширення .eml (Content-type = message / rfc822).

/.muttrc або формуватися автоматично.


Докладніший синтаксис:

[Ред] За допомогою mpack

Mpack - стара програма (Linux, FreeBSD), призначена для пакування файлу в MIME-формат.

Якщо в якості виходу вказати емейл (або декілька), файл буде відправлений за допомогою sendmail або його замінника.

Особливості - вкласти в лист можна тільки один файл, але є опція максимального розміру, якщо він перевищується, генерується кілька вихідних файлів (листів).

[Ред] За допомогою biabam

Biabam не вміє правильно кодувати російський текст при відправці. Якщо ви знаєте, як це виправити - напишіть тут.

Дана програма використовує штатний клієнт mail.

[Ред] Посилання

[Ред] Ліцензія на текст

Текст доступний на умовах ліцензії Creative Commons Attribution / Share-Alike

[Ред] Матеріали по налаштуванню поштових систем на Xgu.ru

Схожі статті