How to make responsive email work with yahoo mobile app?

大兔子大兔子 提交于 2019-12-02 11:03:01

问题


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>

回答1:


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.



来源:https://stackoverflow.com/questions/42321841/how-to-make-responsive-email-work-with-yahoo-mobile-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!