diff --git a/modules/store/src/main/resources/db/migration/postgresql/V1.1.0__useremail.sql b/modules/store/src/main/resources/db/migration/postgresql/V1.1.0__useremail.sql
index 0080ba0d..5cf5f9f1 100644
--- a/modules/store/src/main/resources/db/migration/postgresql/V1.1.0__useremail.sql
+++ b/modules/store/src/main/resources/db/migration/postgresql/V1.1.0__useremail.sql
@@ -18,13 +18,21 @@ CREATE TABLE "useremail" (
 CREATE TABLE "sentmail" (
   "id" varchar(254) not null primary key,
   "uid" varchar(254) not null,
-  "item_id" varchar(254) not null,
   "message_id" varchar(254) not null,
   "sender" varchar(254) not null,
   "subject" varchar(254) not null,
   "recipients" varchar(254) not null,
   "body" text not null,
   "created" timestamp not null,
-  foreign key("uid") references "user_"("uid"),
-  foreign key("item_id") references "item"("itemid")
+  foreign key("uid") references "user_"("uid")
+);
+
+CREATE TABLE "sentmailitem" (
+  "id" varchar(254) not null primary key,
+  "item_id" varchar(254) not null,
+  "sentmail_id" varchar(254) not null,
+  "created" timestamp not null,
+  unique ("item_id", "sentmail_id"),
+  foreign key("item_id") references "item"("itemid"),
+  foreign key("sentmail_id") references "sentmail"("id")
 );
diff --git a/modules/store/src/main/scala/docspell/store/records/RSentMail.scala b/modules/store/src/main/scala/docspell/store/records/RSentMail.scala
index 1caffc04..9bde3fcc 100644
--- a/modules/store/src/main/scala/docspell/store/records/RSentMail.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RSentMail.scala
@@ -11,7 +11,6 @@ import emil.MailAddress
 case class RSentMail(
     id: Ident,
     uid: Ident,
-    itemId: Ident,
     messageId: String,
     sender: MailAddress,
     subject: String,
@@ -27,7 +26,6 @@ object RSentMail {
   object Columns {
     val id            = Column("id")
     val uid           = Column("uid")
-    val itemId          = Column("item_id")
     val messageId      = Column("message_id")
     val sender      = Column("sender")
     val subject      = Column("subject")
@@ -38,7 +36,6 @@ object RSentMail {
     val all = List(
       id,
       uid,
-      itemId,
       messageId,
       sender,
       subject,
@@ -54,7 +51,7 @@ object RSentMail {
     insertRow(
       table,
       all,
-      sql"${v.id},${v.uid},${v.itemId},${v.messageId},${v.sender},${v.subject},${v.recipients},${v.body},${v.created}"
+      sql"${v.id},${v.uid},${v.messageId},${v.sender},${v.subject},${v.recipients},${v.body},${v.created}"
     ).update.run
 
   def findByUser(userId: Ident): Stream[ConnectionIO, RSentMail] =
diff --git a/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala b/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala
new file mode 100644
index 00000000..2a729539
--- /dev/null
+++ b/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala
@@ -0,0 +1,52 @@
+package docspell.store.records
+
+import cats.effect._
+import cats.implicits._
+import doobie._
+import doobie.implicits._
+import docspell.common._
+import docspell.store.impl.Column
+import docspell.store.impl.Implicits._
+
+case class RSentMailItem(
+    id: Ident,
+    itemId: Ident,
+    sentMailId: Ident,
+    created: Timestamp
+) {}
+
+object RSentMailItem {
+
+  def create[F[_]: Sync](itemId: Ident, sentmailId: Ident, created: Option[Timestamp] = None): F[RSentMailItem] =
+    for {
+      id <- Ident.randomId[F]
+      now <- created.map(_.pure[F]).getOrElse(Timestamp.current[F])
+    } yield RSentMailItem(id, itemId, sentmailId, now)
+
+
+  val table = fr"sentmailitem"
+
+  object Columns {
+    val id         = Column("id")
+    val itemId     = Column("item_id")
+    val sentMailId = Column("sentmail_id")
+    val created    = Column("created")
+
+    val all = List(
+      id,
+      itemId,
+      sentMailId,
+      created
+    )
+  }
+
+  import Columns._
+
+  def insert(v: RSentMailItem): ConnectionIO[Int] =
+    insertRow(
+      table,
+      all,
+      sql"${v.id},${v.itemId},${v.sentMailId},${v.created}"
+    ).update.run
+
+}