|
![]() |
#1 |
Участник
|
А как Вы формируете собственно письмо? В смысле, куда передаете сформированное значение переменной msg? В какой объект?
Кстати, Вы по совету mazzy посмотрели текст источника? В этом самом источнике есть перевод строк? Т.е. где произошла ошибка: при формировании письма в портале или при его чтении в почтовом клиенте?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
![]() А как Вы формируете собственно письмо? В смысле, куда передаете сформированное значение переменной msg? В какой объект?
Кстати, Вы по совету mazzy посмотрели текст источника? В этом самом источнике есть перевод строк? Т.е. где произошла ошибка: при формировании письма в портале или при его чтении в почтовом клиенте? mail.quickSend(name, _ecpCustSignUp.UserEmail, "@SYS98191", msg); из класса SysMailer, но, насколько я понял, форматирует строку функция strfmt еще перед передачей в этот метод. Исходный текст я посмотрел, но только в Аутлуке. Он как раз нормальный. А в mail.ru посмотреть исходный текст не получается. Не знаю как. То есть, можно было бы сказать, что виноват почтовый клиент. Но, ведь другие письма отображаются с форматированием, значит используются какие-то другие символы превода строки. В Аутлуке сработал символ ручного перевода каретки, который вводится с помощью Alt+011(код символа), но в mail.ru это все-равно не работает. Поэтому пока версия такая, что Аксапта правильно генерирует строку, но использует управляющие символы, которые не везде работают. Стало быть, нужно найти такие символы, которые везде работают. Если, конечно, они есть. |
|
![]() |
#3 |
Участник
|
Цитата:
Цитата:
![]() Не используйте quickSend и обычный текстовый формат сообщений, используйте формат html и форматируйте письма соотв. образом - тогда будут вам и переводы строк, и работающие гиперссылки: X++: msg = strfmt(@'<p>%1<br/>Адрес электронной почты (%2) bla-bla-bla.<br/>' + @'Чтобы подтвердить, щелкните по ссылке: <a href="%3">%3</a><br/>' + @'С наилучшими пожеланиями, <a href="mailto:%4">%4</a></p>', "@SYS98189", _ecpCustSignUp.UserEmail, confirmationUrl, helpdeskEmail); |
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
![]() |
#4 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() Почтовые клиенты не виноваты, особенно mail.ru
![]() Не используйте quickSend и обычный текстовый формат сообщений, используйте формат html и форматируйте письма соотв. образом - тогда будут вам и переводы строк, и работающие гиперссылки: X++: msg = strfmt(@'<p>%1<br/>Адрес электронной почты (%2) bla-bla-bla.<br/>' + @'Чтобы подтвердить, щелкните по ссылке: <a href="%3">%3</a><br/>' + @'С наилучшими пожеланиями, <a href="mailto:%4">%4</a></p>', "@SYS98189", _ecpCustSignUp.UserEmail, confirmationUrl, helpdeskEmail); Но, ведь quickSend, насколько я понял, только пересылает строку, а в каком она формате, зависит только от того, как вы эту строку собрали, - plain text'ом или в html-формате? Или plain и html должны разными методами отсылаться по почте? |
|
![]() |
#5 |
Участник
|
Да, разными. Если вы посмотрите на методы SysMailer из 4-ки или 3-ки, то увидите у него отдельно body()/bodyCharSet() и htmlBody()/htmlBodyCharSet(). В 2009-й первые два убрали, однако, COM-объект, для которого SysMailer является оберткой, от этого не изменился, он все ещё умеет отсылать текст писем plain text'ом, и метод quickSend() для обратной совместимости так их и шлет.
|
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() Да, разными. Если вы посмотрите на методы SysMailer из 4-ки или 3-ки, то увидите у него отдельно body()/bodyCharSet() и htmlBody()/htmlBodyCharSet(). В 2009-й первые два убрали, однако, COM-объект, для которого SysMailer является оберткой, от этого не изменился, он все ещё умеет отсылать текст писем plain text'ом, и метод quickSend() для обратной совместимости так их и шлет.
Возможно, еще кому-то будет полезно. Итак, что я понял... Почтовым клиентом письмо воспринимается как в формате "текст" или как в формате "html". При этом в шапке письма должно существовать поле Content-Type, хотя в сорсе страницы на mail.ru я такого поля в заголовке письма не вижу. Соответственно, если мы хотим отправить письмо простым текстом, мы должны воспользоваться методом quickSend, а если хотим отправить письмо с html контентом, то методом sendMail. Но, вот здесь с этим методом sendMail я уже ничего не понимаю, потому как вот все его содержание: public void sendMail() { InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); //BP Deviation Documented _COM.send(); } Где COM уже системный класс. В общем, никаких параметров, никаких полей заголовка письма и никакой документации куда че толкать. РасскАжите как этим пользоваться? Я так понимаю, ваш пример должен был пересылаться как раз этим методом, потому как quickSend строку с объектами html отослать-то может, но почтовые клиенты этого снова не поймут. Кстати, если все-таки пытаться цеплять html-ные тэги в строку для quickSend, кое-что происходит. Например </br> таки переводит строку, а если расметить что-то типа полного линка, то сам линк не отображается, зато начинает отображаться следующая за ним строка, начинающаяся с "http://". |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() Да, разными. Если вы посмотрите на методы SysMailer из 4-ки или 3-ки, то увидите у него отдельно body()/bodyCharSet() и htmlBody()/htmlBodyCharSet(). В 2009-й первые два убрали, однако, COM-объект, для которого SysMailer является оберткой, от этого не изменился, он все ещё умеет отсылать текст писем plain text'ом, и метод quickSend() для обратной совместимости так их и шлет.
Возможно, еще кому-то будет полезно. Итак, что я понял... Почтовым клиентом письмо воспринимается как в формате "текст" или как в формате "html". При этом в шапке письма должно существовать поле Content-Type, хотя в сорсе страницы на mail.ru я такого поля в заголовке письма не вижу. Соответственно, если мы хотим отправить письмо простым текстом, мы должны воспользоваться методом quickSend, а если хотим отправить письмо с html контентом, то методом sendMail. Но, вот здесь с этим методом sendMail я уже ничего не понимаю, потому как вот все его содержание: public void sendMail() { InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); //BP Deviation Documented _COM.send(); } Где COM уже системный класс и посмотреть че в нем нельзя. В общем, никаких параметров, никаких полей заголовка письма и никакой документации куда че толкать. РасскАжите как этим пользоваться? Я так понимаю, ваш пример должен был пересылаться как раз этим методом, потому как quickSend строку с объектами html отослать-то может, но почтовые клиенты этого снова не поймут. Кстати, если все-таки пытаться цеплять html-ные тэги в строку для quickSend, кое-что происходит. Например </br> таки переводит строку, а если расметить что-то типа полного линка, то сам линк не отображается, зато начинает отображаться следующая за ним строка, начинающаяся с "http://". |
|
Теги |
mail, почта |
|
|