OfficeJS Body.setAsync will break inline image on the email - outlook-addin

Client:
Microsoft Outlook for Mac
Build 16.26 / 16.27
Issue:
After calling Body.setAsync with html body that contains inline image. Outlook client will not send the underlying image with the email. As a result, recipient of the email won't be able to see the image.
Repro steps:
1. Install Salesforce Outlook Debug Tools https://sfdc-addin-tools.herokuapp.com/manifest
2. Go to New Email
3. In compose window, launch debug tools addin
4. At the top, click "Interactive tests" button
5. Insert a picture from your local directory
6. Click "Get body" on the addin
7. Click "Set body" on the addin
8. Send the email (preferably gmail, or email account outside your local Outlook account)
9. (Recipient mailbox) Inline image is not rendered
Notes:
1. Get body and Set (the same) body will append extra style attribute to the <img> tag
Original:
<img width=200 height=255
style='width:2.0833in;height:2.6562in' id="Picture 1"
src="local/image001.gif">
After set:
<img width=200 height=255
style='width:2.0833in;height:2.6562in' id="Picture 1"
src="local/image001.gif"
style='height:2.656in;width:2.083in'>
Email that has an extra style attribute doesn't have the embedded image, and src attribute refers to original location src="/Users/bob/pictures/etc/" as oppose to src="cid:image001" in the encoded message.
Seeing the same email on the sent folder will be just fine. My thought is its referencing the image from local directory.
Question for MSFT team:
1. Any workaround? Or timeline to have this fixed?

We are aware of this issue and are working on getting this fixed. We don't have a timeline yet, but we'll update this post as soon as we do.

Related

RobotFramework Opening Email Links using robotframework-imaplibrary2

Currently using a robotframework-imaplibrary2 [a extension of robot framework]
To open emails sent, I just want to open the link from the sent email in a using the the normal robot framework selenium functions
Is this possible?
Email Verification
Open Mailbox host=imap.hiddeb.com user=fsf#fsefesf.com password=sfefsff
${LATEST} = Wait For Email sender=sfefsefs#sfefsf.com timeout=300
${HTML} = Open Link From Email ${LATEST}
The library contains this
${HTML} = Open Link From Email ${LATEST}
Looking at the implementation of the keywords, I'd say this has nothing to with selenium.
What seems to happen is, you need an email that is in HTML format (not plain text). Then you need the index of that email, which is in your case stored in variable ${LATEST}
Calling Open link from Email ${LATEST} uses the first link (that is the default behaviour) that is found in that email and opens the url and gets the HTML content of that website. There does not seem to be any browser or webdriver involved.
However, if you like to open a link in a browser, I would try the keyword Get Links from Email:
${ALL_LINKS} Get Links from Email ${LATEST}
SeleniumLibrary.Go To ${ALL_LINKS}[0]
Disclaimer: Since I do not have any test-email server available, my suggestion might require adjustments.

Sitecore ECM : Message preview gives wrong output

I have a Multi Site system, version 6.5 with ECM 1.3. E-mails are sent using SSL/TLS over port 587, all connections are running and tested and I am able to send test-mails.
When creating a new Newsletter in my ECM and then going to the Message Preview, I do not see the (empty) layout of the newsletter, but instead Sitecore displays the home page of the website itsself?! This issue occurs for every template except the HTML Message. When sending the Newsletter as a test mail, I receive an e-mail with more or less the layout of the website, as shown in the preview.
Any ideas?
Best regards,
Hessel
Make sure that the Newsletter Branch (i.e.$name under Branches >> Branch Newsletter) and Email Message Root (i.e. Email Message root under Branches >> Branch Newsletter >> $name) have been assigned the Custom Newsletter Template.
Check Email Message Root by clicking this on the Ribbon (You might already know this but .....)
Select the Email Message Root in the tree.
In the Ribbon click Presentation >> Layout >> Details and the Layout Details dialog box should give you the info.
Simultaneously also check the content and presentation binding is in place and relevant renderings like Set Page Title, Basic Newsletter Title&Text and Basic Newsletter Header are in place.
Check in Custom Newsletter branch template the layout details of $name item.
Make sure for the default device your Custom Newsletter Layout is set and also these type of controls are set in their respective placeholders.
Process Personalization Tokens (sublayout) & Custom NewsLetter TitleAndText in email-content (placeholder).
Set Page Title in Html-title(placeholder).
Once these settings are configured correctly, try creating a new item from that branch and hopefully the preview should work.
Let us know how you get along and if the above was of any help.
In some cases this might be a security issue, when we try to preview a message for recipient (! not the context user !) who doesn’t have permission to read the message.
Try to set CheckReceiverRights setting value to true in Sitecore.EmailCampaign.config file. In case, it is security issue, you will be alerted in the preview window.

OpenERP 6.1 - Email template to default to html

I am trying to send an email from the partner window using the Send Mail menu on the right hand panel.
For this I have created a template email from the configuration menu, left the body (Text) empty and filled the body (Rich/html) with:
<p>Some text in <b>bold</b></p>
When I run send mail from the partner form, the message body is desperately empty and it looks like it is defaulting the message body to the Body (Text) tab from the email template.
This is confirmed when I look at table email_template where the field subtype is always "Plain".
I tried to setup the Action window specific to my email template by setting the domain value to [('subtype','=','html')], but it doesn't change anything. I also added this code to most of the Action window domains that relate to email but it hasn't changed anything either.
Does anyone know how to default sending email in HTML format from OpenERP?
UPDATE: Has anyone got a sample of HTML code that works for them, meaning they receive correctly in their email client?
My issue is that if I leave the Plain Text empty within the template and have some html tags under the Rich/html, then I receive an email in format html, but it is always empty. Even the source is totally empty. I suppose there is something wrong with my html syntax. Maybe I need to double the "/" in a closing paragraph as it may be an escape character somewhere, somehow. I have tried a lots of different syntaxes but apparently not the right one.
So if someone out there had some html coding that works for them and they'd
be happy to share, thanks in advance!
UPDATE 2, I have created an html template email after a quick training on the internet. I have tested my bit of code with litmus and it shows exactly what I wanted to see. I then paste this exact same bit of code into OpenERP, send the email message to my email client, identical to the one on litmus, and it is totally empty. However, it says the format is HTML. There is definitely an issue somewhere but I can't point out where. It seems OpenERP doesn't send the html code. Has anyone ever had the same issue???
Here is the html basic code I have used for testing and that I pasted into OpenERP:
<html>
<body leftmargin="0" marginwidth="0" marginheight="0" offset="0">
<table width="100%" bgcolor="#cccccc" cellpading="10" cellspacing="10">
<tr valign="top" align="center">
<td>
<table width="500" bgcolor="#ffffff" cellpading="0" cellspacing="0">
<tr>
<td>
liusuhflsb
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Short answer: you can't do that in 6.1 without using third-party addons or custom code.
Long Answer:
OpenERP 6.1 does not provide a WYSIWYG/Rich Text editor out-of-the-box (OpenERP 7.0 introduces that)
As a result, in 6.1, only the plain text version of a template is used whenever the user can manually edit the email contents. Indeed it would be quite awkward to ask users to manually edit the source of the HTML version of the template when composing their email (no WYSIWYG).
It is the case when you're composing a new email based on a template, via the corresponding Send Mail side bar action, because you can modify the email before sending it.
One typical case where both the HTML/Rich Text and the plain text version of a template are used as expected is when an email template is bound to a Marketing Campaign step (via the marketing_campaign module) - because these emails are sent without any editing nor any manual user action.
UPDATE:
If that's what you're interested in, Marketing Campaigns will
always send both the plain-text and HTML version of your emails
automatically, and the recipients' mail software will display the
relevant one based on user preferences (for most people it will be the
HTML version). However you can not test the templates using the
Send Mail sidebar buttons, because that will keep only the plain-text version, as explained above. There are two recommended ways
to test those campaign emails:
Use the Preview button on the template and select a sample record to render the template for. This will let you double-check the
source of the HTML that will be produced.
Test-drive your campaign putting in "manual" mode: have a dummy record enter the campaign with your email address on it, then use the
Campaign Follow-up menu to make it manually advance through the campaign steps. This is really important to validate not only your
email templates but also the structure of your campaign. See also this
basic introduction to OpenERP Marketing Campaign, from OpenERP
Community Days 2012.
There are community modules that add WYSIWYG editing capabilities to OpenERP 6.1 (search for WYSIWYG on OpenERP Apps), but I don't think they were integrated with the email_template module in order to enable composing Rich Text directly. Doing it wouldn't be very hard though. If you're interested, start by reading the source code of the mail.compose.message wizard (both the original version of the mail module and the email.template extension), to see how the template fields are used and where.
If you're not familiar with OpenERP development, the developer documentation of OpenERP and the technical memento will be interesting starting points.
The e-mail message is sent with both contents: plain and html.
The e-mail client makes the decision to render either one, depending on it's capabilities. It it's html capable, it will use the HTML version, if not, the plain version will be rendered.
You should provide the two versions for the message in your template: plain and html.
This is over a year ago and I have given up on OpenErp because of this kind of flaws. I never got around to having OpenERP send me an automated email in HTML format, no matter what I tried. It always defaulted to text whichever email client I used. I would like to know if wome other people have managed receiving automated html email that related to a marketing campaign in OpenERP?

Is it possible to send inline image using email template in openerp?

I have to send an image using email template in OpenERP but I have to insert it just like we have a feature of insert image in gmail,yahoo and have here also in stackoverflow.com.
I have to send image like this is because I want it should be displayed at the same time when mail is open, along with the text.
If I send it using attachments it coems in attachments which we can see just after download the image. I dont need this download option what I need is open image.
thanks in advance !
There are 3 common ways to embed images within an email (in increasing complexity order): using public URLs, using Data URI to inline the image data in the src attribute, and using images attached to the email.
In all 3 cases you can use regular HTML techniques to include them in the HTML/Rich-Text body of the OpenERP email template: for example with an <img src="..."/> tag or the CSS background-image property.
Only the first 2 techniques will work out-of-the-box in OpenERP's email templates.
1. Using hosted images
The image URL can simply be a public URL on your website or any image hosting service on the internet:<img src="http://www.example.com/myimage.png">. This is very similar to what happens when you embed an image on stackoverflow, as the image is first uploaded to imgur.com automatically and the img src attributes refers to the URL of the uploaded image on imgur.com.
This works but nowadays most email clients (thunderbird, gmail, outlook, ...) will block remote images, as they are commonly abused to detect the fact that a given email was opened by its recipient (if the image is downloaded, it means the mail was opened). Typically the recipient will have to click a banner or warning in order to display these remote images.
This is the only technique that works out-of-the-box with OpenERP's email templates.
2. Using Data URI to inline the image data
The src attribute of an img tag can use the Data URI (RFC 2397) scheme to include the image binary source inline. The image tag would look like this:
<img src="data:mime-type;encoding,<encoded_image_data>"/>
For a PNG image, this could look like this
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..."/>
You can use this technique for OpenERP email templates, and it does not have the downside of being blocked by email clients. However you will need to manually convert your image to base64[A]. This will also substantially increase the size of your templates and your outgoing emails, and has several limitations (e.g. max 32KB if you want maximum compatibility).
[A]: Google "online base64 file encoder" if you want a simple way to do the conversion
3. Using attached images (not currently supported in OpenERP)
RFC 2111 specifies a way for message body parts to refer to other body parts using cid: URLs. For example the img src attribute within an email can refer to one of the attachments. Technically the img tag could look like this:
<img src="cid:some_unique_content_id/>
where some_unique_content_id is the Content-ID of the message part that contains the image. This is what it will look like in the final (raw) email:
------=_NextPart_WHATEVER_ID
Content-Type: image/jpeg;
name="image.jpg"
Content-Transfer-Encoding: base64
Content-ID: <some_unique_content_id>
Content-Disposition: inline;
filename="image.jpg"
/9j/4AAQ...continuation_of_the_base64_encoded_image
This technique also does not have the downside of being blocked by email clients, but it is more complex to implement because you need to specifically assign a Content-ID to each attachment, and the final email that is sent on the wire is bigger because it must contain the actual images.
This is not currently available in OpenERP, but it would not be very difficult to implement. One trivial way would be to automatically assign sequential Content-ID identifiers to all attachment (e.g. attachment_1, attachment_2) when the final mail is crafted by the email layer, and perhaps add an option in the email template Value Builder assistant to generate cid-based URLs for the attachments.
this maybe useful embedding image in html email
although I don't think this is an openerp-related problem...
Here is how I added the company logo on my Sale Order email template with Odoo 11:
<p>
% set company = object.company_id or ctx.get('company')
% if company.logo:
% set field_value = '%s' % company.logo
% set company_logo_base64 = 'data:image/*;base64,%s' % field_value[2:-1]
% endif
<img t-if="company_logo_base64" src="${company_logo_base64}">
</p>

Xcode - Add hyperlink to email

In some apps you can email straight from the app. I have seen Flipboard, you can email an article to a friend and inside the email is hyperlinked text like this:
Sent via Flipboard
So it directs you to the page with a click of the text. How can I do this? I do not want to add the link as part of the message body as it is very messy and ugly... I would prefer this clickable text way.
Thanks!
The MFMailComposeViewController has a method called
setMessageBody:isHTML:.
Here the important thing is isHTML.
Doing a link in HTML is quite simple : <a href=myURL>LinkName</a>.