接收带有节点的电子邮件
#node #测试 #email #mailisk

您可能找到了有关发送节点的电子邮件的十二个帖子。但是接收他们呢?

为什么?

您什么时候要收到电子邮件而不是发送电子邮件?最常见的用例是用于测试密码重置和电子邮件流。一个常见的电子邮件流正在注册,接收代码并将该代码输入注册。

如何?

我们将使用mailisk库接收电子邮件。这是一项免费的电子邮件测试服务,使我们能够阅读电子邮件。它通过创建一个可以将电子邮件发送到的虚拟电子邮件服务器来工作。

电子邮件adders看起来像这个<anything>@mynamespace.mailisk.netmynamespace是您的namespace的名称。可以使用API​​读取发送到@mynamespace.mailisk.net结束的地址的电子邮件。

设置


安装库

npm install mailisk

我们将使用 client 与API进行交互,您可以通过API Key
创建一个

const { MailiskClient } = require('mailisk')

const mailisk = new MailiskClient({ apiKey: 'YOUR_API_KEY' })

接收电子邮件

我们可以使用searchInbox函数接收电子邮件。它只需要一个参数,我们的namespace

const { MailiskClient } = require('mailisk')

const mailisk = new MailiskClient({ apiKey: 'YOUR_API_KEY' })

mailisk.searchInbox('mynamespace').then(console.log)

这里的注释是,默认情况下,这只会返回最新电子邮件 - 过去5秒内收到的任何电子邮件。可以通过覆盖from_timestamp参数来更改。您可以检查docs以获取更多信息。

考虑到这一点,让我们对其进行更改,以便为我们提供收件箱中的所有电子邮件,无论何时收到

mailisk.searchInbox('mynamespace', { from_timestamp: 0 }).then(console.log)

为了证明这项工作,我们需要发送电子邮件。您可以使用自己的电子邮件提供商(例如Gmail)发送一个。任何以您的命名空间结尾的地址都可以正常工作,在这里让我们简单地将其发送到john@mynamespace.mailisk.net

发送电子邮件并执行脚本后,这就是我们在控制台中获得的

{
  total_count: 1,
  options: { limit: 10, offset: 0, from_timestamp: 0, wait: true },
  data: [
    {
      id: '1667305800547-9KJHqVLG5',
      from: { address: 'test@example.com', name: '' },
      to: [ { address: 'john@mynamespace.mailisk.net', name: '' } ],
      subject: 'This is a test',
      html: 'false',
      text: 'Something goes here',
      received_date: '2022-11-01T12:30:00.000Z',
      received_timestamp: 1667305800,
      expires_timestamp: 1667565000,
      spam_score: 0.1
    }
  ]
}

发送电子邮件

为了使测试更加容易,我们还可以将Mailisk使用 send 电子邮件。这些只能发送到Mailisk名称空间

...
const namespace = 'mynamespace'

await mailisk.sendVirtualEmail(namespace, {
  from: 'test@example.com',
  to: `john@${namespace}.mailisk.net`,
  subject: 'Testing',
  text: 'This is a test.',
})

为例,让我们向自己发送电子邮件,然后阅读

const { MailiskClient } = require('mailisk')

const namespace = 'mynamespace'

// create client
const mailisk = new MailiskClient({ apiKey: 'YOUR_API_KEY' })

async function main() {
  // send email
  await mailisk.sendVirtualEmail(namespace, {
    from: 'test@example.com',
    to: `john@${namespace}.mailisk.net`,
    subject: 'Testing',
    text: 'This is a test.',
  })

  // receive latest email
  const { data: emails } = await mailisk.searchInbox(namespace, {
    to_addr_prefix: `john@${namespace}.mailisk.net`,
  })

  // print out the subjects of all the recieved emails
  for (const email of emails) {
    console.log(`Received email with subject '${email.subject}'`)
  }
}

main().then(() => console.log('Done'))

您会注意到我们在这里也使用了to_addr_prefix。这让我们通过其目标地址过滤我们获取的电子邮件。在此示例中,我们向john@...发送了一封电子邮件,因此我们只关心发送给john@...的电子邮件。如果我们不过滤,我们还将返回其他电子邮件,例如发送到somethingelse@...

的电子邮件

关闭笔记

这应该足以让您起床并开始接收节点中的电子邮件。

如果您使用的是柏树,请查看我们在Password reset with Cypress上的帖子,该帖子具有Mailisk Cypress插件(和示例存储库)。否则,还有有关在documentationAPI Reference

中获取电子邮件选项的其他信息