Nodejs 在 meteor 中如何正确使用 sendcloud?
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)
显示的是内容不相等的问题?我想请教一下该如何解决这个问题?
解决方法:
通过Accounts.emailTemplates
进行模板的相关设置
[详情见链接]( http://docs.meteor.com/api/passwords.html#Accounts-emailTemplates)
在 Meteor 中使用 Node.js 来集成 SendCloud 发送邮件,可以通过以下步骤实现。SendCloud 提供了一个 Node.js SDK,方便进行 API 调用。以下是一个基本的示例,展示如何在 Meteor 应用中配置和使用 SendCloud。
-
安装 SendCloud Node.js SDK
首先,通过 npm 安装 SendCloud SDK:
meteor npm install sendcloud
-
配置 SendCloud
在你的 Meteor 应用中,配置 SendCloud 的 API Key 和 API Secret。你可以在 SendCloud 的控制台找到这些凭据。
-
发送邮件
以下是一个发送邮件的示例代码:
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 发送邮件了。