2011-10-27 10 views
0

私はZend_Mailを使ってSMTP経由でテキストメールを送信しています。テスト環境では、ブラウザクライアント経由で電子メールを収集する際に、URLがハイパーリンクに変換されているが、リンクと通常テキストの境界が間違った場所に描画されていることに気付きました。一部のアンカータグが正しくないのはなぜですか?

たとえば、下記のメールスニペットでは、ユーザーに登録メールを送信したことがわかります。 'id'と 'code'のパラメータが含まれています。この場合、ブラウザクライアントは 'id'がハイパーリンクの一部であると判断しますが、 'code'はハイパーリンクの一部ではありません。

please follow this link <a href="http://mydomain.com/user/validate/id/18">http://mydomain.com/user/validate/id/18</a>/code/1a0d917c1512c700f7237ae1f3727e47 If you did not... 

「境界」は、コードフィールドの途中など、任意の場所に描画されることがあります。

Outlookなどのクライアント経由で電子メールを収集する場合、問題は発生していないようです。

おそらく、これは私のPHP環境とブラウザクライアントの間の文字セットの何らかの非互換性です。私は在庫標準のPHPをインストールしていますが、私はブラウザクライアントの他のサイトからのリンクを受け取ることに問題はありませんでした。 (ブラウザクライアントはウェブマスターアカウントの一部として提供されます)

アイデアはありますか?

更新:リンクを生成するコードは次のとおりです。あなたは、プレーンで書くとき:setBodyText()電子メールの一部のみテキストを設定するとEOT、単一引用符、二重引用符...同じ結果を含む組み合わせのすべての種類...

$id   = $options['id']; 
$code  = $options['validation']; 
$link  = "http://mydomain.com/user/validate/id/" . $id . "/code/" . $code; 

$body = 'Thanks for registering ... please follow this 
link ' . $link . ' If you did not request ....please ignore it.'; 

$this->setBodyText($body); 
+0

アンカーを生成するコードを表示できますか? – Phil

答えて

0

を試してみましたテキストメール特定の意味を持たない文字だけを書くリンク。それがリンクであるかどうかを理解するよりもメールを受け取るクライアントとそれをレンダリングする方法について説明します。しかし、このプロセスは私たちのコントロールから外れています(クライアント側であり、ユーザーが持つクライアントに依存します)。

私の意見では最善の解決策は、あなたがどのようにリンクをレンダリングするために、メールクライアントに明示的に伝えるこのを行う

$yourMailObject->setBodyHtml($htmlString); 

を呼び出すこともセットにZend_MailのオブジェクトのHTML部分です。

もう少し作業が必要ですが、クライアントがHTMLタグをAタグとしてレンダリングする必要があるため、適切なHTMLを渡すことをお勧めします。 $bodyText = "Something... click here: $link ...";

  • 準備:

    1. (さんが言わせて)$link変数
    2. にテキスト形式でメール本文を作成し、リンクを決定し、それを置く:要約する

      は、ワークフローは以下の通りです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>";

    3. コールメールオブジェクトの両方の方法:$yourMailObject->setBodyText($bodyText)->setBodyHtml($bodyHtml);

    それからあなたはいつものようにメールを送信します。任意で、より複雑な方法でhtmlをカスタマイズし、インライン cssなどを追加することもできます。また、テキストのみのメール(モノスペースフォント)で表示するように書式を設定することもできますが、正しいHTMLを渡したので、クライアントが適切なリンクをクリックすることができます。

  • 関連する問題