diff --git a/addons/sale/data/mail_template_data.xml b/addons/sale/data/mail_template_data.xml
index 709d0187277..dfb4ac3f041 100644
--- a/addons/sale/data/mail_template_data.xml
+++ b/addons/sale/data/mail_template_data.xml
@@ -15,7 +15,7 @@
${object.partner_id.lang}
Dear ${object.partner_id.name}
-% set access_action = object.get_access_action()
+% set access_action = object.with_context(force_website=True).get_access_action()
% set doc_name = 'quotation' if object.state in ('draft', 'sent') else 'order confirmation'
% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'
% set access_name = is_online and object.template_id and 'Accept and pay %s online' % doc_name or 'View %s' % doc_name
diff --git a/addons/website_portal_sale/models/sale_order.py b/addons/website_portal_sale/models/sale_order.py
index d36779d8797..6ce53b45284 100644
--- a/addons/website_portal_sale/models/sale_order.py
+++ b/addons/website_portal_sale/models/sale_order.py
@@ -16,7 +16,7 @@ class SaleOrder(models.Model):
self.ensure_one()
if self.state == 'cancel' or (self.state == 'draft' and not self.env.context.get('mark_so_as_sent')):
return super(SaleOrder, self).get_access_action()
- if self.env.user.share:
+ if self.env.user.share or self.env.context.get('force_website'):
try:
self.check_access_rule('read')
except exceptions.AccessError: