Nodejs 在 meteor 中如何正确使用 sendcloud?

发布于 1周前 作者 wuwangju 来自 nodejs/Nestjs

Nodejs 在 meteor 中如何正确使用 sendcloud?

注册 sendcloud 之后

我在正确设置了 process.env.MAIL_URL 之后,没有再添加任何代码

使用的是 ian:accounts-ui-bootstrap-3 包,点击忘记密码后出现如下问题:

I20160620-00:39:27.760(8)? Exception while invoking method 'forgotPassword' DeliveryError: Message delivery failed: 553 template_validate not match, reason:unequal content
I20160620-00:39:27.762(8)?     at Object.Future.wait (/home/quoniam/.meteor/packages/meteor-tool/.1.3.2_4.10vjklo++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:420:15)
I20160620-00:39:27.762(8)?     at smtpSend (packages/email/email.js:89:1)
I20160620-00:39:27.762(8)?     at Object.Email.send (packages/email/email.js:188:1)
I20160620-00:39:27.763(8)?     at AccountsServer.Accounts.sendResetPasswordEmail (packages/accounts-password/password_server.js:577:9)
I20160620-00:39:27.763(8)?     at [object Object].forgotPassword (packages/accounts-password/password_server.js:516:12)
I20160620-00:39:27.763(8)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12)
I20160620-00:39:27.763(8)?     at packages/ddp-server/livedata_server.js:711:19
I20160620-00:39:27.763(8)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20160620-00:39:27.764(8)?     at packages/ddp-server/livedata_server.js:709:40
I20160620-00:39:27.764(8)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20160620-00:39:27.764(8)?     - - - - -
I20160620-00:39:27.764(8)?     at SMTPConnectionPool._onConnectionReady (/home/quoniam/.meteor/packages/email/.1.0.12.eitj2++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/pool.js:287:21)
I20160620-00:39:27.764(8)?     at SMTPClient.emit (events.js:98:17)
I20160620-00:39:27.765(8)?     at SMTPClient._actionStream (/home/quoniam/.meteor/packages/email/.1.0.12.eitj2++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/client.js:946:14)
I20160620-00:39:27.765(8)?     at SMTPClient._onData (/home/quoniam/.meteor/packages/email/.1.0.12.eitj2++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/client.js:329:29)
I20160620-00:39:27.765(8)?     at CleartextStream.emit (events.js:95:17)
I20160620-00:39:27.765(8)?     at CleartextStream.<anonymous> (_stream_readable.js:765:14)
I20160620-00:39:27.765(8)?     at CleartextStream.emit (events.js:92:17)
I20160620-00:39:27.766(8)?     at emitReadable_ (_stream_readable.js:427:10)
I20160620-00:39:27.766(8)?     at _stream_readable.js:420:7
I20160620-00:39:27.766(8)?     at process._tickCallback (node.js:458:13)

显示的是内容不相等的问题?我想请教一下该如何解决这个问题?


2 回复

解决方法:

通过Accounts.emailTemplates进行模板的相关设置

[详情见链接]( http://docs.meteor.com/api/passwords.html#Accounts-emailTemplates)


在 Meteor 中使用 Node.js 来集成 SendCloud 发送邮件,可以通过以下步骤实现。SendCloud 提供了一个 Node.js SDK,方便进行 API 调用。以下是一个基本的示例,展示如何在 Meteor 应用中配置和使用 SendCloud。

  1. 安装 SendCloud Node.js SDK

    首先,通过 npm 安装 SendCloud SDK:

    meteor npm install sendcloud
    
  2. 配置 SendCloud

    在你的 Meteor 应用中,配置 SendCloud 的 API Key 和 API Secret。你可以在 SendCloud 的控制台找到这些凭据。

  3. 发送邮件

    以下是一个发送邮件的示例代码:

    const SendCloud = require('sendcloud');
    const sc = new SendCloud('your_api_key', 'your_api_secret');
    
    Meteor.methods({
      'sendEmail': function(to, subject, content) {
        sc.send({
          api_user: 'your_api_user',  // 通常是你的邮箱地址
          from: 'your_email@example.com',
          to: to,
          subject: subject,
          html: content,
          xsmtpapi: {
            to: to
          }
        }, function(error, result){
          if(error){
            console.log(error);
          } else {
            console.log(result);
          }
        });
      }
    });
    

    你可以通过调用 Meteor.call('sendEmail', to, subject, content) 来发送邮件。

请确保替换 'your_api_key', 'your_api_secret', 'your_api_user', 和 'your_email@example.com' 为你的实际 SendCloud 配置信息。这样,你就可以在 Meteor 应用中通过 SendCloud 发送邮件了。

回到顶部