如何链接html电子邮件中的块级元素?

时间:2011-07-07 16:34:31

标签: html email hyperlink outlook block

在html电子邮件中点击整个内容块的最佳方法是什么,以便它也适用于Outlook(2003年,2007年,2010年)。

例如,我有这个号召性用语:

call to action button

到目前为止,我已经想出了这个:

  <table cellpadding="0" cellspacing="0" style="border: 1px #ffffff dashed;">
    <!-- NAVIGATION AREA START -->
    <tr>
      <td width="370" style="font-family:'Times New Roman', Times, serif;font-size: 22px;font-weight:bold;line-height:52px;">
        <div style="margin-left: 15px; margin-top: 0; margin-bottom: 0; height:100%;">
            <a href="http://${servername}/" style="text-decoration:none;color:#fff;">
                LEARN MORE ABOUT ABOUT THIS
            </a>
        </div>
      </td>
      <td width="160">
        <table cellpadding="0" cellspacing="0" height="24">
            <tr>
                <td>
                    <div style="background-color:#fff; margin-top: 0; margin-bottom: 0;width:128px;height:24px;color: #000000;text-decoration: none;font-size: 12px;line-height: 24px;">
                        <a href="http://${servername}/" style="text-decoration:none;color:#000;margin-left: 5px;">
                            CLICK HERE
                        </a>
                    </div>
                </td>
                <td>
                    <img style="display: block;" width="13" height="24" border="0" alt="" title="" src="http://${servername}/images/mailing/arrow-white.png" />
                </td>
            </tr>
        </table>
      </td>
    </tr>
    <!-- NAVIGATION AREA END -->
  </table>

问题是虚线边框内的整个区域应该是可点击的。我尝试使用table标记包装整个a,但这在Outlook或IE中不起作用(它适用于Firefox)。

或者,考虑一下:

<table width="255" cellspacing="0" cellpadding="0" bgcolor="#000000" style="border: 10px solid #fff;">
    <tr>
        <td valign="top" style="width:130px;padding-bottom: 15px; padding-top: 15px; padding-left: 15px;">
            <p style="color:#ffffff;font-family:'Times New Roman', Times, serif;font-size: 16px;margin-top: 0; margin-bottom: 5px;">
                <strong>FAQ</strong>
            </p>
            <p style="font-family: arial,sans-serif; font-size: 14px; color:#d0d0d0; line-height: 20px; margin-top: 0; margin-bottom: 0;">
                Learn more about our services.
            </p>
        </td>
        <td align="center" style="padding-bottom: 15px; padding-top: 15px;">
            <p style="margin-top: 0;margin-bottom: 0;">
                <img width="54" height="102" border="0" src="http://${servername}/images/mailing/questionmark.png" title="" alt="">
            </p>
        </td>
    </tr>
</table>

在这里,整个块(在白色边框内)应该是可点击的,而不仅仅是单独的文本行。

考虑到Outlook 2007/2010中对CSS的不良支持(例如没有display CSS属性),您会如何解决这个问题?

底线:如何链接块级别的商品而不能使用a(尝试使用tablediv)或使用display: block;进行包装吗

5 个答案:

答案 0 :(得分:2)

此答案旨在展示Outlook(2013)中所有不同选项的呈现方式,从到目前为止发现的“最佳”解决方案开始

<table width="100%" style="background-color: #ccc;"><tr>
<td style="padding: 15px; text-align: center;">
    <a href="http://www.stackoverflow.com" style="text-decoration: none; color: #333;">
        Go to some great website!
    </a>
</td>
</tr></table>

这将呈现如下:

link in email, best version found

或者,链接hitbox注释:

link in email, annotated best version

是的,这很糟糕:你希望整个块可以点击。基本上我在这里告诉你问题的答案“如何链接块元素(outlook兼容)”是:这是不可能的,不是没有解决方法。


支持我的声明(PS。我高度欢迎任何证明此声明错误的人!),这是我尝试过的所有变体,以及它们在Outlook中的各自渲染。我也试图在其他答案中包含一些建议的解决方案。

以下是我用于生成电子邮件的代码:

<html>
    <head>
        <title>My e-mail</title>
    </head>
    <body>
        <table width="660px" align="center" border="0" cellspacing="0" cellpadding="0" style="width: 660px;">
            <tr>
                <td style="padding: 15px;">

                    <p>1. The "best" text-only version I've found:</p>
                    <table width="100%" style="background-color: #ccc;"><tr>
                    <td style="padding: 15px; text-align: center;">
                        <a href="http://www.stackoverflow.com" style="text-decoration: none; color: #333;">
                            Go to some great website!
                        </a>
                    </td>
                    </tr></table>

                    <hr />
                    <p>2a. Workaround using an image. Setting size through style attribute does not work.</p>
                    <a href="http://www.stackoverflow.com">
                        <img alt="Go to some great website!" src="your custom image" style="width: 100%; height: 30px;" />
                    </a>

                    <hr />
                    <p>2b. Workaround using an image. Kind of works, but requires an image of exactly correct size through attributes.</p>
                    <a href="http://www.stackoverflow.com">
                        <img alt="Go to some great website!" src="your custom image" width="640px" height="30px" />
                    </a>

                    <hr />
                    <p>3. Attempt to link the entire table. Does not work.</p>
                    <a href="http://www.stackoverflow.com" style="text-decoration: none; color: #333;">
                        <table width="100%" style="background-color: #ccc;"><tr>
                        <td style="padding: 15px; text-align: center;">
                                Go to some great website!
                        </td>
                        </tr></table>
                    </a>

                    <hr />
                    <p>5. Attempt to link the entire div. Does not work.</p>
                    <a href="http://www.stackoverflow.com" style="text-decoration: none; color: #333;">
                        <div style="background-color: #ccc; padding: 15px; text-align: center;">
                            Go to some great website!
                        </div>
                    </a>

                    <hr />
                    <p>6. Setting anchor tag to display as a block. Does not work.</p>
                    <a href="http://www.stackoverflow.com" style=" display: block; text-decoration: none; color: #333; background-color: #ccc; padding: 15px; text-align: center;">
                        Go to some great website!
                    </a>

                    <hr />
                    <p>6. Hacking with line-height, does not work.</p>
                    <div style="background-color: #ccc; text-align: center;">
                        <a href="http://www.stackoverflow.com" style="line-height: 3em; text-decoration: none; color: #333;">
                            <span style="vertical-align: middle;">Go to some great website!</span>
                        </a>
                    </div>

                </td>
            </tr>
        </table>
    </body>
</html>

以下是Outlook 2013如何呈现它们,并使用链接hitbox注释:

renderings by outlook of the above code

答案 1 :(得分:0)

就个人而言,我会将号召性用语添加为电子邮件中的图片,并简单地用锚标记包装。

<a href="//"><img src="http://myimage.com/image.png" alt="" /></a>

鉴于这是针对电子邮件的,您是否有理由在HTML中建立号召性用语?

<强>更新

或者你也可以这样做:

http://jsfiddle.net/gv5aZ/

(我为你准备的小提琴)

答案 2 :(得分:0)

在每个字段中加上<a>。不优雅,但这很有效。

如果有一个空的字段,只需在其中放置一个正确的宽度和高度的透明图像。 (图像本身,未在html中调整大小)

答案 3 :(得分:-1)

我没有对此进行过广泛的测试,但我确实得到了一些工作。

在标题样式和'a href =“”'中添加以下内容:

标题样式:

#outlook a { padding-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; }

链接内联样式:

<a style="font-family: #; font-size: #px; text-decoration: #; border: #color #px #; color: #; padding-bottom: #px; padding-top: #px; padding-left: #px; display: inline-block; padding-right: #px; font-style: #;" href="#" target="_blank">Read more...</a>

将#替换为您的样式,当然除了显示属性(将其保留在!)

同样,我没有对此进行过广泛的测试,但对我来说它的确有效,所以不要错过我在这里所写的内容:)

编辑:您的设计中可能没有边框,因此请将其设置为与背景相同的颜色

答案 4 :(得分:-3)

你为什么不在桌子周围放一个锚?虽然不完全确定它是否适用于Outlook,但它是最简单的解决方案

<a href="...."><table>....</table></a>