С помощью setBodyText () вы устанавливаете текст только часть письма: когда вы пишете в текстовом сообщении по электронной почте ссылку, вы пишете только некоторые символы без особого значения; клиент, который получит письмо, поймет, является ли это ссылкой и как ее отобразить. Однако этот процесс находится вне нашего контроля (он находится на стороне клиента и зависит от клиента, которого имеет пользователь).
На мой взгляд, лучшее решение - установить также HTML-часть объекта Zend_Mail , вызывая
$yourMailObject->setBodyHtml($htmlString);
Делая это , вы прямо указываете почтовому клиенту, как отобразить ссылку .
Очевидно, что вам придется работать немного больше, но, поскольку вы хотите, чтобы клиент отображал свойство HTML в виде тега A, лучший способ - передать ему правильный HTML.
Подводя итог, рабочий процесс выглядит следующим образом:
- определите ссылку и поместите ее (скажем так) в
$link
переменную
- подготовить текст письма в виде простого текста:
$bodyText = "Something... click here: $link ...";
- подготовить почтовое тело в HTML:
$bodyHtml = "<body><p>Click the link below</p><p><a href='$link'>$link</a></p><p>Or copy and paste in your browser the url:<br/><pre>$link</pre></p></body>";
- вызовите оба метода почтового объекта:
$yourMailObject->setBodyText($bodyText)->setBodyHtml($bodyHtml);
Тогда вы можете отправить письмо как обычно. При желании вы можете настроить html более сложным способом, добавив inline css и так далее. Вы также можете отформатировать его, чтобы оно отображалось как текстовое письмо (с моноширинным шрифтом), но поскольку вы передали правильный HTML, вы можете быть уверены, что клиент нажмет на соответствующую ссылку.