1

I have created an email template that is tested to work properly on desktop clients like gmail/yahoo/outlook and also tested correct responsive behavior on mobile gmail app. I am using Android/Galaxy S4.

The responsive styles are not effective on yahoo mobile app. Infact, it is not reading the CSS rules from 'style'. Though, desktop chrome set to mobile views (using Inspect -> toggle device toolbar) and logging in to yahoo mail shows the email reading the responsive styles.

Question: Does yahoo mobile app not support responsiveness? Or, does it particularly need additional hacks?


Update: I tried moving the CSS styles from head to body. It then reads the styles. But having styles in the body may not to be a good idea, gmail mobile app now ignores it.


Here is the email code that I am using:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Sample Page</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="x-apple-disable-message-reformatting">
    <style>
        body {
            mso-line-height-rule:exactly;
            -ms-text-size-adjust:100%;
            -webkit-text-size-adjust:100%}
        table, td {
            mso-table-lspace: 0pt;
            mso-table-rspace: 0pt}
        table {
            border-collapse: collapse;
            border-spacing: 0;margin: 0 auto}
        img, a img {
            border:0 none;
            height: auto;
            line-height: 100%;
            outline: none;
            -ms-interpolation-mode: bicubic}
        a[x-apple-data-detectors] {
            color: inherit !important;
            text-decoration: none !important;
            font-size: inherit !important;
            font-family: inherit !important;
            font-weight: inherit !important;
            line-height: inherit !important}
        .x-gmail-data-detectors, .x-gmail-data-detectors *, .aBn {
            border-bottom: 0 !important;
            cursor: default !important}
        .a6S {
            display:none !important;
            opacity:0.01 !important}
        img.g-img + div {
            display:none !important}
        .button-link {
            text-decoration: none !important}
        @media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
            .ios-gm-fix {
                min-width: 375px !important;}
        }
    </style>
    <style>
        #email-container {
            border:1px solid #CCC;
            border-radius:3px;
            border-collapse:separate}
        .desktop-view {color:blue}
        .mobile-view {color:#444}
        @media only screen and (max-width: 480px) {
            #email-container-wrap {
                width:100% !important;
                padding:0 !important}
            #email-container {
                border:none;border-radius:0}
            .desktop-view {color:#444}
            .mobile-view {color:blue}
            #email-contents {
                padding:15px 22px !important;
                font-size:16px!important}
        }
    </style>
</head>
<body width="100%" bgcolor="#FFFFFF" style="margin:0 auto;padding:0;height:100%">
    <center style="width=100%;background=#ffffff">
    <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#F0F0F0" class="ios-gm-fix" style="margin:0;width:100%;line-height:100%"><tbody>
        <tr>
            <td align="center" valign="top" width="100%" style="padding:0;margin:0;height:100%;width:100%">
                <div id="email-container-wrap" style="width:600px;max-width:600px;padding:25px 0;margin:0 auto">
                    <table role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" id="email-container" style="background-color:#ffffff"><tbody>
                        <tr>
                            <td align="center" valign="top" width="100%" id="email-contents" style="font-family:arial,helvetica,sans-serif;font-size:13px;line-height:18px;color:#333333;padding:20px 35px">
                                <table role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%"><tbody>
                                    <tr>
                                        <td align="center" valign="top" width="100%" id="email-header">
                                            <table  role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%"><tbody>
                                                <tr>
                                                    <td align="left" valign="top" width="100%"></td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="center" valign="top" width="100%" id="email-body">
                                            <table  role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%">
                                                <tbody>
                                                    <tr>
                                                        <td align="left" valign="top" width="100%">
                                                            <table role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%"><tbody>
                                                                <tr>
                                                                    <td align="left" valign="top" width="100%" class="desktop-view" style="padding:3px 0 16px">
                                                                        <span>On Desktop, there will be a border and gray background on all sides.</span>
                                                                    </td>
                                                                </tr>
                                                                <tr>
                                                                    <td align="left" valign="top" width="100%" class="mobile-view" style="padding:3px 0 16px">
                                                                        <span>On Mobile, the border and background will not exist.</span>
                                                                    </td>
                                                                </tr>
                                                            </tbody></table>
                                                        </td>
                                                    </tr>
                                                </tbody>
                                            </table>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="center" valign="top" width="100%" id="email-footer">
                                            <table  role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%"><tbody>
                                                <tr>
                                                    <td align="left" valign="top" width="100%">
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </td>
                        </tr>
                    </tbody></table>
                </div>
            </td>
        </tr>
    </tbody></table>
    </center>
</body>
</html>
Ethan
  • 4,915
  • 1
  • 28
  • 36
  • You might want to check out this tutorial series about modern HTML email coding: http://blog.edmdesigner.com/modern-html-email-tutorial/ Check out this new Drop Calc method to create responsive email templates. This approach will help you to code emails that work in Yahoo as well. http://blog.edmdesigner.com/the-drop-calc-method-to-create-responsive-html-emails/ – Roland Pokornyik Feb 20 '17 at 07:14
  • @Ethan can you post the code you're working with so we can debug and find out what's going on? – Ted Goas Feb 22 '17 at 01:16
  • @TedGoas Yes, I will cut out a small test version and will post here. Will notify you once done. – Ethan Feb 22 '17 at 02:10
  • @TedGoas I have updated with the code. – Ethan Feb 24 '17 at 17:38

2 Answers2

8

On Android, Yahoo only supports <style> tags in the <body>, not in the <head>. But Gmail only supports <style> tags in the <head>, not in the <body>. C'est la vie!

Since we're only dealing with ~20 lines of code (assuming the 2nd <style> tag in your example), you might try duplicating this <style> tag so it appears in both the <head> and <body>. I don't know for certain if this will work, but it's worth testing.

Ted Goas
  • 7,051
  • 1
  • 35
  • 42
  • It's indeed C'est la vie! Yes, I have started duplicating that. (The – Ethan Feb 25 '17 at 03:09
1

Yahoo! Mail app for Android removes the first head element, causing media queries in the element to have no chance of being applied. A workaround is adding an empty head element before the original one so that the app will only remove the empty one.

Please see this article for details: Double Head trick in Yahoo Mail App for Android

Ian Y.
  • 2,293
  • 6
  • 39
  • 55