IT-companies
January 2011 13

Шлём письма из Mail.app с правильным форматированием

Если вы пользуетесь Apple Mail и шлете письма в формате HTML, то, возможно, заметили, что у получателей ваших писем шрифт текста совсем не тот, который вы выставили в настройках. Причина этого безобразия проста — Mail.app не указывает в посылаемом HTML-тексте шрифт, а установленный в настройках шрифт используется только при создании своих писем или просмотре чужих, если в них тоже не указан шрифт. В результате программа, которая получает письмо, выводит его на экран тем шрифтом, который она сочтет нужным использовать. У тех, кто пользуется Microsoft Outlook, где шрифт по умолчанию — Times New Roman, 12 пунктов, ваши письма будут выглядеть особенно коряво. Могут быть различные причины нежелания смиряться с таким положением вещей — от простых эстетических до необходимости следовать корпоративным стандартам.

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

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

Можно, конечно, использовать другую программу. Но если вам нравится именно Mail.app, то для вас не все потеряно: под катом я расскажу про еще один вариант, который мне показался наиболее удачным.

Мы воспользуемся функцией создания писем на основе бланка (Stationery). Если вы этим никогда не пользовались, то создайте новое письмо и нажмите в на кнопку «Показать бланк» на панели инструментов нового письма. Появится список поставляемых с Mail.app бланков. Когда вы выбираете бланк, то появляется красивый шаблон, в который можно вставить свои картинки и текст.

Нам нужно создать собственный шаблон. Mail хранит шаблоны в каталоге /Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources. Там есть папки, соответствующие различным категориям бланков. Можно выбрать любую, для определенности возьмем папку Announcements. Зайдя внутрь, мы найдем папку Contents, и дальше — Resources.

Открыв эту папку, вы увидите, среди прочего, папки-пакеты (bundle) с расширением ".mailstationery", помеченные белыми иконками, изображающими конверты. Нам нужно создать такой же пакет. Для этого создаем каталог, и называем его по своему вкусу, например, «mymail.mailstationery».

Система его сразу же изобразит в виде пакета. Заходим в пакет, ткнув в него правой кнопкой мыши (либо Control+клик) и выбрав из локального меню «Показать содержимое пакета». В нем создаем папку «Contents», и в этой папке создаем папку «Resources».

Теперь нам нужно создать несколько файлов и еще одну папку. Сначала создадим папку «English.lproj», и в ней заведем один текстовый файл с именем «DisplayName.strings». Такой файл необязательно создавать с нуля, его можно раздобыть в любом другом таком же пакете, а потом слегка подредактировать. Собственно, в файле есть только одна строчка:

"Display Name" = "My Mail";

Она задает имя, которое будет присвоено вашему бланку. Вместо «My Mail» можно поставить все, что вы пожелаете.

Дальше нам нужно создать в каталоге Resouces еще три файла. Самый главный — это, собственно, HTML-шаблон. Файл называется content.html. Для начала впишите туда что-нибудь вроде этого:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
 <title>Formal</title>
</head>

<body style="margin: 10px; padding: 0pt; background: rgb(255, 255, 255)">
 <div class="body-content" id="body-content">
    <font style="font-size: 13px;" color="#000000" face="Tahoma, Arial, Helvetica, sans serif">
     <span contenteditable="true" apple-content-name="body" style="display: block; width: 600px"> <br></span>
    </font>
 </div>
</body>
</html>




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

Второй файл называется «Description.plist». Вот его содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Background Images</key>
    <array/>
    <key>Composite Images</key>
    <array/>
    <key>Folder Name</key>
    <string>mymail.mailstationery</string>
    <key>HTML File</key>
    <string>content.html</string>
    <key>Images</key>
    <array>
    </array>
    <key>Stationery ID</key>
    <string>52CF436E-68DA-4842-A638-2B912C5F7322</string>
    <key>Thumbnail Image</key>
    <string>thumbnail.png</string>
</dict>
</plist>



И последний файл должен называться thumbnail.png. Кстати, судя по всему, в бланках поддерживаются только файлы форматов png и jpeg, поэтому не пытайтесь использовать, например, gif. Лучше всего этот файл взять из какого-нибудь другого бланка, и, при желании, подредактировать его.

Теперь у нас есть все, что нужно. Осталась последняя деталь: чтобы создавать новые письма было удобно, должен быть быстрый способ создания письма на основе бланка. И такой способ есть: попытка открыть созданный нами пакет бланка в Finder приводит к созданию пустого письма на основе этого бланка. Поэтому я рекомендую перетащить созданный нами пакет «mymail.mailstationery» в правую часть Dock-а, слева от корзины. Тогда функция создания нового письма будет всегда под рукой, даже когда главное окно Mail.app перекрыто или свернуто.

Эргономически процесс будет слегка отличаться от обычного: вам придется ткнуть мышкой в левый верхний угол в окне нового письма, чтобы появился курсор и открылось поле для ввода текста.

Если вы захотите добавить какие-то картинки (например, логотип компании), то скопируйте графический файл в тот же каталог «Resources» в формате jpeg или png, вставьте на него ссылку в HTML-файл шаблона и не забудьте включить название этого файла в Description.plist. После этого раздел Images этого файла будет выглядеть таким образом:

<key>Images</key>
    <array>
        <string>my_logo.png</string>
    </array>



Я проверил этот метод с различными почтовыми программами, включая MS Outlook, все работает как надо.
+5
8.4k 13
Comments 6