Dynamics Email Marketing Template Editor is Overriding Custom CSS - email

I'm attempting to apply custom CSS to a blank email template in Dynamics' Email Marketing template editor. I inserted a code block into the template that has the following:
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400' rel='stylesheet' type='text/css'>
<style>
body {
font-family: "Open Sans", Arial, sans-serif;
background: #ececec;
}
p.MsoNormal {
line-height: 25px !important;
text-decoration: underline;
}
</style>
(The attributes shown above are just for testing purposes.)
The problem I'm encountering is when I do a test send, some of the CSS is not being applied. The source of the email contains inline styling that overrides my CSS:
<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt;line-height: normal'><span style='font-family:"Open Sans",sans-serif;mso-fareast-font-family: "Times New Roman";text-decoration:none;text-underline:none'>
In the head of the email source, I can see that SOME of my CSS is being recognized and integrated into the document's style definitions (specifically, text-decoration):
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
line-height:18.75pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman",serif;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
text-decoration:underline;
text-underline:single;}
And I can also confirm that the webfont is being applied.
Am I applying custom CSS incorrectly? If not, other than building out emails entirely in the HTML editor, is there a way to reliably apply custom CSS without it being overridden with inline styles?

Related

Change asterisk position in label

I was reading through this website https://experience.sap.com/fiori-design-web/label/ and saw this:
So I was like "Sweet let's try it out!" and added required="true" to my label:
<Label required="true" text="E-Mail"/>
and this is what I got:
How do I bring the asterisk to the left side?
I'm using v1.81.0
The asterisk used to be on the left side but the new Fiori design guideline requires it to be on the right side which is implemented in UI5 since 1.73. Here is the related commit: https://github.com/SAP/openui5/commit/11544b855407af6f1025e8a855dc46701648779d.
The new design for sap.m.Label requires the asterisk
to be in the right side of the label.
The picture in the guideline page is outdated.
As the latest version of UI5 targets the latest Fiori design guidelines, I'd discourage from using any custom CSS which often leads to inconsistent UI and higher maintenance costs.
We faced a similar dilemma in one of our recent projects. We had no choice but to override the standard css. It is not suggested to override the standard CSS but it sure can be taken into account as a last resort.
As we wanted this property to be enabled for all the labels in the project we did override the standard CSS. You can also provide a custom class and override. Below is the css to remove the "*" from the right and place it on the left of the text.
.sapMLabelRequired:before {
content: "*";
color: #c14646;
font-family: "72", "72full", Arial, Helvetica, sans-serif;
font-size: 1rem;
font-weight: bold;
position: relative;
vertical-align: middle;
line-height: 0;
}
.sapMLabel.sapMLabelRequired .sapMLabelColonAndRequired:after {
content: "" !important;
}

Hosted Custom Fonts on HTML Email Signature

Before I begin, I'm a designer, not a coder.
I've successfully created an HTML signature with custom hosted fonts using #font-face, however, once I send the email and receive a reply, the font formatting is lost. It defaults back to Arial or whatever.
here's my code, am I doing something wrong?
I've listed the font family name as `sfd'. I can't remember if this is the actual name, or if it's just an alias I created.
<body>
<style type="text/css">
#media screen {
#font-face {
font-family: 'sfd';
src: url('http://archive.friendthemagazine.com/email_signature/studiofrontdesk-regular-webfont.woff2') format('woff2'),
url('http://archive.friendthemagazine.com/email_signature/studiofrontdesk-regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
}
* {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
</style>
You are not doing anything wrong. The font you are using (studiofrontdesk-regular-webfont) is a web fonts, there are only a handful of devices that read/render web fonts. Below is a list for you.
Apple Mail
Outlook for Mac
iOS
Source: List updated 20th September 2021
Only these email clients will show the web fonts and the rest will read the fall back font. Add the fallback fonts (Arial etc) to your font family.
One method I use for my emails is to have the web font and the below code specifically for Outlook.
<!--[if gte mso 9]>
<style>
table, table td{font-family:Arial, Helvetica, 'sans-serif' !important;}
</style>
<![endif]-->
When emails are replied, the fonts that are on the users system or default to Outlook are used.
Your font is not a downloaded font. So once you send it, it is indeed gone. What you could try is downloading the font, place the file inside the directory you are in now. And put the name of the downloaded font inside your source.
Like this:
#font-face {
font-family: fontname;
src: url('fontname.otf');
}
Hope this helped!

Outlook renders HTML tags differently compared to other mail client

I have created an email template for our site. When I look that email template in outlook 2013, I'm getting collapsed layout. But, I'm getting expected email template in other mail clients like gmail, etc.
I'm aware, outlook renders using "Microsoft word engine", but i couldn't figure out where i go wrong with my code. Here is the code i have used
.header img{
margin-left: 25px !important;
margin-top: 46px !important;
vertical-align: center;
}
.footer-social-links{
float: right;
margin-right: 20px;
margin-top: 15px;
}
Outlook doesn't recognize margin with a lowercase m. Furthermore it has buggy support for margin. As an example, there's no support for margin-top.
https://www.campaignmonitor.com/css/box-model/margin/
For a top margin replacement, consider using line-height or a spacer table.
Good luck.

Is it possible to use custom fonts in sendgrid?

Is it possible to import fonts in sendgrid? I've been trying to use #font-face but it doesn't seem to work, but maybe I'm doing something wrong.
Example of the code I used:
#font-face {
font-family: Avenir;
src: url('http://cdn.linktofont.com/font.ttf');
}
We use SendGrid to send some of our emails at StackOverflow, and I can vouch that web fonts work if they are embedded correctly. I use this code:
<!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. -->
<!--[if mso]>
<style>
* {
font-family: sans-serif !important;
}
</style>
<![endif]-->
<!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ -->
<!--[if !mso]><!-->
<link href='https://fonts.googleapis.com/css?family=Roboto:400,700' rel='stylesheet' type='text/css'>
<!--<![endif]-->
<style>
* {font-family: Roboto, sans-serif;}
</style>
I'm not sure how to best embed a premium font like Avenir, and don't know how well the .ttf format is supported in email clients. But referencing a Google font in a manner like this, custom web fonts will work in mail clients that support them using SendGrid.
I had the same issue, and the only way that I have found to make it work using my custom .ttf file was by defining a and using a class. In the Header options add your styles:
#media screen {
#font-face {
font-family: 'MyFont';
src: url('https://some-server/fonts/MyFont.ttf');
format('truetype');
}
}
.title {
font-family: 'MyFont';
}
Then just use that class in your element:
<h1 class="title"> Some fancy title </h1>
And as was said in a comment before, note that it only takes effect in preview mode and not in the design editor.

How to refer to font file inside a Confluence plugin?

I want a text use specific font style, I assign its CSS class as ".title" and the related code all are declared in a CSS file within a Confluence plugin as following:
#font-face {
font-family: 'Myriad Pro';
font-style: normal;
src: url(MyriadPro-Regular.otf) format("opentype"), local("Consolas");
}
.title {
font-family: Myriad Pro;
}
But the plugin cannot find the font file. The font file is in the same folder with the CSS file.
What should be the url for the font file?
For Confluence Server, a basic plugin could be defined like so:
With some files in the following structure:
/your-plugin-name/
/your-plugin-name/main
/your-plugin-name/main/java
/your-plugin-name/main/resources
/your-plugin-name/main/resources/atlassian-plugin.xml
/your-plugin-name/main/resources/css/custom.css
/your-plugin-name/main/resources/fonts/MyriadPro-Regular.otf
And an atlassian-plugin.xml like this:
<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2">
<plugin-info>
<description>${project.description}</description>
<version>${project.version}</version>
<vendor name="${project.organization.name}" url="${project.organization.url}" />
</plugin-info>
<web-resource key="your-web-resources" name="Web Resources">
<resource name="style.css" type="download" location="css/custom.css" />
<resource name="myriad.otf" type="download" location="fonts/MyriadPro-Regular.otf" />
<!-- Adding main & global contexts means that these web resources will always be loaded. -->
<context>main</context>
<context>global</context>
</web-resource>
</atlassian-plugin>
Your CSS and font files will be available globally throughout Confluence.
Your CSS file will automatically be loaded and be named something like /downloads/gfdsgfdsgf/fdsgfd/me.davidsimpson.confluence.plugins.example:your-web-resources/style.css where gfdsgfdsgf/fdsgfd is some random characters.
You should be able to reference your font files as though they are in the same directory as the css file like so:
#font-face {
font-family: 'Myriad Pro';
font-style: normal;
src: url(myriad.otf) format("opentype"), local("Consolas");
}
.title {
font-family: Myriad Pro;
}
..but note that they have new names - style.css & myriad.otf.
For Confluence Server
If you want something like Consolas to work in Confluence, you'd either need to ensure that the font is installed on all browsers, or use a similar web font such as Inconsolata.
If you're happy that everyone has the correct font installed, add the following to
Confluence Admin | Custom HTML | At the END of the HEAD:
<style> body { font-family: Consolas, monaco, monospace; } </style>
If you decide to use the web font, add the following to
Confluence Admin | Custom HTML | At the END of the HEAD:
<link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet">
<style> body { font-family: Inconsolata, Consolas, monaco, monospace; } </style>
These assume that you want to use the Consolas font stack - where a similar font will be used if the Consolas/Inconsolata font fails to load.
For Confluence Cloud
You cannot edit CSS or add markup to the page, so this is not possible.