Если вы пользуетесь 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». Такой файл необязательно создавать с нуля, его можно раздобыть в любом другом таком же пакете, а потом слегка подредактировать. Собственно, в файле есть только одна строчка:
Она задает имя, которое будет присвоено вашему бланку. Вместо «My Mail» можно поставить все, что вы пожелаете.
Дальше нам нужно создать в каталоге Resouces еще три файла. Самый главный — это, собственно, HTML-шаблон. Файл называется content.html. Для начала впишите туда что-нибудь вроде этого:
В дальнейшем вы сможете менять все по своему вкусу, в том числе, возможно, захотите добавить подпись. Дело в том, что если письмо создается на основе бланка, то обычный механизм добавления подписи к нему не работает.
Второй файл называется «Description.plist». Вот его содержимое:
И последний файл должен называться thumbnail.png. Кстати, судя по всему, в бланках поддерживаются только файлы форматов png и jpeg, поэтому не пытайтесь использовать, например, gif. Лучше всего этот файл взять из какого-нибудь другого бланка, и, при желании, подредактировать его.
Теперь у нас есть все, что нужно. Осталась последняя деталь: чтобы создавать новые письма было удобно, должен быть быстрый способ создания письма на основе бланка. И такой способ есть: попытка открыть созданный нами пакет бланка в Finder приводит к созданию пустого письма на основе этого бланка. Поэтому я рекомендую перетащить созданный нами пакет «mymail.mailstationery» в правую часть Dock-а, слева от корзины. Тогда функция создания нового письма будет всегда под рукой, даже когда главное окно Mail.app перекрыто или свернуто.
Эргономически процесс будет слегка отличаться от обычного: вам придется ткнуть мышкой в левый верхний угол в окне нового письма, чтобы появился курсор и открылось поле для ввода текста.
Если вы захотите добавить какие-то картинки (например, логотип компании), то скопируйте графический файл в тот же каталог «Resources» в формате jpeg или png, вставьте на него ссылку в HTML-файл шаблона и не забудьте включить название этого файла в Description.plist. После этого раздел Images этого файла будет выглядеть таким образом:
Я проверил этот метод с различными почтовыми программами, включая MS Outlook, все работает как надо.
Самое простое, но не самое удобное решение — каждый раз выставлять вручную шрифт. Моей силы воли на это не хватает. Если вы с этим проблем не видите, дальше можно не читать.
Второй вариант — создать автоматическую подпись с нужным шрифтом, так, чтобы в ней было несколько пустых строк в начале, и писать внутри этой подписи. С этим вариантом, к сожалению, наблюдаются проблемы: по какой-то причине регулярно случаются глюки с размером шрифта.
Можно, конечно, использовать другую программу. Но если вам нравится именно 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, все работает как надо.