diff --git a/app/components/activity/EventDescription.jsx b/app/components/activity/EventDescription.jsx
index 13ff6926d5f61676aba10279b68c0e2abf60c602..3e9445ddf026a5e52a752207cb004d4868b1dba4 100644
--- a/app/components/activity/EventDescription.jsx
+++ b/app/components/activity/EventDescription.jsx
@@ -2,10 +2,12 @@ import React from 'react'
 import { Query } from 'react-apollo'
 import styled from 'styled-components'
 import moment from 'moment'
-import { Icon, Action } from '@pubsweet/ui'
+import { Icon, Action, Button } from '@pubsweet/ui'
 import { th } from '@pubsweet/ui-toolkit'
 import { B } from '../ui'
 import { AllTypes } from '../upload-files'
+import { UserContext } from '../App'
+import Mailer from '../mailer'
 import { GET_USER, GET_JOURNAL } from './operations'
 
 const NoteEvent = styled.div`
@@ -22,6 +24,11 @@ const EmailBody = styled.div`
   white-space: pre-wrap;
   padding-top: calc(${th('gridUnit')} * 2);
 `
+const ReplyButton = styled(Button)`
+  min-width: 0;
+  padding: calc(${th('gridUnit')} / 2) ${th('gridUnit')};
+  float: right;
+`
 const Username = ({ id }) => (
   <Query query={GET_USER} variables={{ id }}>
     {({ data, loading }) => {
@@ -45,14 +52,6 @@ const Journal = ({ id }) => (
   </Query>
 )
 
-const toggleHidden = button => {
-  const array = Array.from(button.children)
-  array.forEach(element => {
-    element.classList.toggle('hidden')
-  })
-  button.parentNode.nextElementSibling.classList.toggle('hidden')
-}
-
 const cleanUp = column => column.replace('meta,', '').replace('_', ' ')
 const isJson = str => {
   try {
@@ -105,42 +104,67 @@ const ParseJson = ({ col, val }) => {
   }
 }
 
+class EmailMessage extends React.Component {
+  state = { open: false, mail: false }
+  static contextType = UserContext
+  render() {
+    const currentUser = this.context
+    const { email, manuscript, sender } = this.props
+    const { open, mail } = this.state
+    return (
+      <React.Fragment>
+        <NoteEvent>
+          <div>
+            <B>Sent email to: </B>
+            {email.to === 'helpdesk' ? 'Helpdesk' : <Username id={email.to} />}
+            <br />
+            <B>Subject: </B>
+            {email.subject}
+          </div>
+          <Action
+            onClick={() => this.setState({ open: !open })}
+            title="Message body"
+          >
+            <Icon color="currentColor" size={3}>
+              chevron-{open ? 'down' : 'right'}
+            </Icon>
+          </Action>
+        </NoteEvent>
+        {open && (
+          <div>
+            <ReplyButton onClick={() => this.setState({ mail: true })}>
+              Reply
+            </ReplyButton>
+            <EmailBody>{email.message}</EmailBody>
+          </div>
+        )}
+        {mail && (
+          <Mailer
+            close={() => this.setState({ mail: false })}
+            currentUser={currentUser}
+            manuscript={manuscript}
+            recipients={[sender.id]}
+            subject={`Re: ${email.subject}`}
+          />
+        )}
+      </React.Fragment>
+    )
+  }
+}
+
 const EventDescription = ({ audit, manuscript }) => {
   const { originalData, objectType, changes } = audit
   if (objectType === 'note') {
     const content = JSON.parse(changes.content)
     if (content && content.to) {
       return (
-        <React.Fragment>
-          <NoteEvent>
-            <div>
-              <B>Sent email to: </B>
-              {content.to === 'helpdesk' ? (
-                'Helpdesk'
-              ) : (
-                <Username id={content.to} />
-              )}
-              <br />
-              <B>Subject: </B>
-              {content.subject}
-            </div>
-            <Action
-              onClick={e => toggleHidden(e.currentTarget)}
-              title="Message body"
-            >
-              <Icon color="currentColor" size={3}>
-                chevron-right
-              </Icon>
-              <Icon className="hidden" color="currentColor" size={3}>
-                chevron-down
-              </Icon>
-            </Action>
-          </NoteEvent>
-          <EmailBody className="hidden">{content.message}</EmailBody>
-        </React.Fragment>
+        <EmailMessage
+          email={content}
+          manuscript={manuscript}
+          sender={audit.user}
+        />
       )
     }
-
     return `Note: ${content}`
   }
 
diff --git a/app/components/activity/MetaEdit.jsx b/app/components/activity/MetaEdit.jsx
index 13f0196cd562f783d64e31a47690628f4e9aaad0..1a8a199dfa9c02a425fdde026f6f7cc02fabdced 100644
--- a/app/components/activity/MetaEdit.jsx
+++ b/app/components/activity/MetaEdit.jsx
@@ -120,7 +120,12 @@ class CitationEdit extends React.Component {
         {show === 'search' ? (
           <React.Fragment>
             <H3>Citation search</H3>
-            <PubMedSearch citationData={change} />
+            <PubMedSearch
+              citationData={e => {
+                change(e)
+                close()
+              }}
+            />
             <Exit close={close} />
           </React.Fragment>
         ) : (
diff --git a/app/components/citation-search/PubMedSearch.jsx b/app/components/citation-search/PubMedSearch.jsx
index 4fb5acd6f59afc98d7179cb57f546c9d9a064633..89bf5809b3eefd139176a5fe9430de96606b995a 100755
--- a/app/components/citation-search/PubMedSearch.jsx
+++ b/app/components/citation-search/PubMedSearch.jsx
@@ -349,7 +349,13 @@ class PubMedSearch extends React.Component {
                         </Action>
                       </Notification>
                     ) : (
-                      <Notification type="info">No results found.</Notification>
+                      <React.Fragment>
+                        {hitcount === 0 && (
+                          <Notification type="info">
+                            No results found.
+                          </Notification>
+                        )}
+                      </React.Fragment>
                     )}
                   </React.Fragment>
                 )}
diff --git a/app/components/mailer/MailerContainer.jsx b/app/components/mailer/MailerContainer.jsx
index 180fe9b4fa040d419af4d41ff843e4d8d66210b2..a633d4c1297c329c32e627af7cf51735dc685fe1 100644
--- a/app/components/mailer/MailerContainer.jsx
+++ b/app/components/mailer/MailerContainer.jsx
@@ -15,7 +15,7 @@ const handleSubmit = async (
         manuscriptId: props.manuscript.id,
         to: values.recipients,
         subject: values.subject,
-        messageInHtml: values.message,
+        message: values.message,
       },
       refetchQueries: [
         {
diff --git a/server/email/index.js b/server/email/index.js
index d0c61033cc52867c26b3ae8664f4a05a20bf777f..dce9b336fd43758bf4691ad60277fb5bbf6cc328 100755
--- a/server/email/index.js
+++ b/server/email/index.js
@@ -15,13 +15,16 @@ const {
 
 const { sender, url, testAddress } = config['epmc-email']
 
-const sendMail = (email, subject, messageInHtml, from = null) => {
-  logger.info(`Email recipient: ${email}`)
+const sendMail = (to, subject, message, from = null, cc = null) => {
+  logger.info(`Email recipient: ${to}`)
   const mailData = {
     from: from || sender,
-    to: testAddress || email,
+    to: testAddress || to,
     subject: `[Europe PMC plus] ${subject}`,
-    html: htmlEmailBase(messageInHtml, url),
+    html: htmlEmailBase(message, url),
+  }
+  if (cc) {
+    mailData.cc = testAddress || cc
   }
   Email.send(mailData)
 }
diff --git a/server/xpub-server/entities/email/resolvers.js b/server/xpub-server/entities/email/resolvers.js
index 2f608bd32dc331c7ed9bed103ab3832798499ee2..552572204904ca4f1786e84a56d6a29c7c7c5d11 100644
--- a/server/xpub-server/entities/email/resolvers.js
+++ b/server/xpub-server/entities/email/resolvers.js
@@ -10,43 +10,31 @@ const { url } = config['epmc-email']
 
 const resolvers = {
   Mutation: {
-    async epmc_email(
-      _,
-      { manuscriptId, to, subject, messageInHtml },
-      { user },
-    ) {
+    async epmc_email(_, { manuscriptId, to, subject, message }, { user }) {
       if (!user) {
         throw new Error('You are not authenticated!')
       }
       const uniqueTo = [...new Set(to)]
+      // Get email addresses
+      const sendTo = await uniqueTo.map(async userId =>
+        userId === 'helpdesk'
+          ? 'helpdesk@europepmc.org'
+          : UserManager.findEmail(userId),
+      )
+      const content = { to, subject, message }
+      const note = {
+        manuscriptId,
+        notesType: 'userMessage',
+        content: JSON.stringify(content),
+      }
       await Promise.all(
-        uniqueTo.map(async userId => {
-          const email =
-            userId === 'helpdesk'
-              ? 'helpdesk@europepmc.org'
-              : await UserManager.findEmail(userId)
-          await userMessage(email, subject, messageInHtml)
-          // Create a note
-          const content = {
-            to: userId,
-            subject,
-            message: messageInHtml,
-          }
-          const note = {
-            manuscriptId,
-            notesType: 'userMessage',
-            content: JSON.stringify(content),
-          }
-          await NoteManager.create(note, user)
-        }),
+        // Send email
+        await userMessage(sendTo, subject, message),
+        // Create a note
+        await NoteManager.create(note, user),
       )
-
       return true
     },
-    /* async epmc_addReviewer(_, data, { user }) {
-      await reviewerEmail(data)
-      return true
-    }, */
     async epmc_emailPasswordResetLink(_, { email }, ctx) {
       const user = await UserManager.findByEmail(email)
       if (!user) {
diff --git a/server/xpub-server/entities/email/typeDefs.graphqls b/server/xpub-server/entities/email/typeDefs.graphqls
index 5d8c3655bed1affab9a91a9fb07cde7e5dd9deba..a8bc60b4fe4394ce1dfc4f48a904c284f1427973 100644
--- a/server/xpub-server/entities/email/typeDefs.graphqls
+++ b/server/xpub-server/entities/email/typeDefs.graphqls
@@ -1,6 +1,6 @@
 extend type Mutation {
   # Send email
-  epmc_email(manuscriptId: ID!, to: [ID]!, subject: String!, messageInHtml: String!): Boolean!
+  epmc_email(manuscriptId: ID!, to: [ID]!, subject: String!, message: String!): Boolean!
 
   # Send email to reset password
   epmc_emailPasswordResetLink(email: String!): Boolean!