MFMailComposeViewController сломал стили CSS в шаблоне html

Я использую MFMailComposeViewController для отправки сообщения в формате html. Если мой HTML-шаблон содержит стили CSS:

<div class="margin:10 10 10 0"> <a href="domain.name">Go To</a></div>

В данном случае это работает хорошо.

Но если я отправлю:

<a href="domain.name">Go&nbsp;To</a>

затем я вижу письмо, которое идет с сломанными стилями как там (3D это не моя опечатка)

<div style=3D"margin:10 10 10 10;"><a href=3D"www.google.com">Go=C2=A0To</a></div>

Ну как ломается буква, когда я вставляю в шаблон символы из национальных алфавитов.

Кто-нибудь может сказать в чем проблема и проверить на себе?


person Victor    schedule 02.05.2010    source источник


Ответы (1)


Я пересмотрел свой ответ, чтобы добавить вторую часть решения:

Я обнаружил две проблемы с использованием MFMailComposeViewController для отправки электронной почты в формате HTML с тегами.

1) Для любого тела HTML, которое в конечном итоге кодируется как кавычка-печать, вы должны поместить разрывы строк, чтобы ни одна строка не была> 76 символов.

2) Текст внутри тега должен быть заключен в a, чтобы гарантировать, что MFMailComposeViewController не интерпретирует содержимое как ссылку внутри ссылки.

Например, следующий HTML:

<a href='http://link/to/my/site.com'>site.com</a>

превращался в:

<a href='http://link/to/my/site.com'><a href='http://site.com'>site.com</a></a>

Изменив мое тело HTML на:

<a href='http://link/to/my/site.com'><span>site.com</span></a>

письмо было отправлено корректно.

Полный пример:

NSMutableString *body = [NSMutableString string];
// add HTML before the link here with line breaks (\n)
[body appendString:@"<h1>Hello User!</h1>\n"];
[body appendString:@"<a href=\"http://www.mysite.com/path/to/link\"><span>Click Me!</span></a>\n"];
[body appendString:@"<div>Thanks much!</div>\n"];

Ваше здоровье!

person XJones    schedule 11.11.2010
comment
Большое спасибо за ваше решение. Я проверю ваше решение сегодня и приму ваш ответ. - person Victor; 12.11.2010
comment
Следующий образец: ‹h1›SuperTest‹/h1› получен как --000325554546db27150494e569bb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable ‹html›‹body bgcolor=3D#FFFFFF›‹div›‹h1›Super=C2=A0Test‹/h1›‹/div›‹div›‹/d = iv›‹div›‹br›‹br›Отправлено с моего iPhone‹/div›‹/body›‹/html› --000325554546db27150494e569bb-- - person Victor; 13.11.2010
comment
Ваш образец работает хорошо и для меня, но если я вставлю неразрывный пробел () между «Hello» и «User!» чем ваш образец начинает работать так, как я описал выше. - person Victor; 19.11.2010
comment
Я протестировал тело html внутри, и это заставляет MFMailComposeViewController использовать кодировку для печати в кавычках. Однако ссылка по-прежнему работает корректно. Какую проблему это вызывает у вас? - person XJones; 22.11.2010
comment
Вы правы, на функциональность письма это не влияет. Я просто хочу понять, что приводит к использованию кодировки с кавычками. Строка в моем примере выше не превышает 76 символов и содержит символы только из диапазона 33-126. Большое спасибо за ваше участие. - person Victor; 23.11.2010