Node.js 使用nodejs通过电子邮件发送PKPass
我正在服务器端成功生成Node.js 使用nodejs通过电子邮件发送PKPass,node.js,wallet,passkit,Node.js,Wallet,Passkit,我正在服务器端成功生成pkpass,现在我正在尝试通过电子邮件发送pkpass。我正在尝试这样做,但是当我从发送的电子邮件下载密码后尝试打开密码时,我收到了以下错误无法打开密码“Event.pkpass”。可以通过我的应用程序打开密码,并且工作正常。我做错了什么 传递Url:shoebox://card/Q03UycwVF9DPkMG6ytNw+DviZ6A= 生成PKPass: try { const examplePass = await createPass({ model
pkpass
,现在我正在尝试通过电子邮件发送pkpass
。我正在尝试这样做,但是当我从发送的电子邮件下载密码后尝试打开密码时,我收到了以下错误无法打开密码“Event.pkpass”。
可以通过我的应用程序打开密码,并且工作正常。我做错了什么
传递Url:shoebox://card/Q03UycwVF9DPkMG6ytNw+DviZ6A=
生成PKPass:
try {
const examplePass = await createPass({
model: "./models/Event.pass",
certificates: {
wwdr: "./models/certs/wwdrc.pem",
signerCert: "./models/certs/signerCert.pem",
signerKey: {
keyFile: "./models/certs/signerKey.pem",
passphrase: "54321"
}
},
overrides: {
// keys to be added or overridden
serialNumber: serialNumber
}
});
examplePass.barcode("36478105430"); // Random value
examplePass.headerFields.push({
label : "EVENT",
key : "title",
value : title
});
examplePass.primaryFields.push({
key : "date",
label : "DATE",
value : date
});
examplePass.secondaryFields.push({
key : "location",
label : "LOCATION",
value : location
});
// Generate the stream, which gets returned through a Promise
const stream = examplePass.generate();
res.set({
"Content-Type": "application/vnd.apple.pkpass",
"Content-disposition": `attachment; filename=${passName}.pkpass`
});
stream.pipe(res);
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
requireTLS: true,
auth: {
user: 'email@gmail.com',
pass: 'password'
}
});
let mailOptions = {
from: 'email@gmail.com',
to: userEmail,
subject: "You're on your way to ",
html: '<h1>Testing email</h1>',
attachments: [
{
filename: 'Event.pkpass',
contentType: 'application/vnd.apple.pkpass',
content: stream
}
]
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error.message);
}
console.log('success');
});
发送电子邮件:
try {
const examplePass = await createPass({
model: "./models/Event.pass",
certificates: {
wwdr: "./models/certs/wwdrc.pem",
signerCert: "./models/certs/signerCert.pem",
signerKey: {
keyFile: "./models/certs/signerKey.pem",
passphrase: "54321"
}
},
overrides: {
// keys to be added or overridden
serialNumber: serialNumber
}
});
examplePass.barcode("36478105430"); // Random value
examplePass.headerFields.push({
label : "EVENT",
key : "title",
value : title
});
examplePass.primaryFields.push({
key : "date",
label : "DATE",
value : date
});
examplePass.secondaryFields.push({
key : "location",
label : "LOCATION",
value : location
});
// Generate the stream, which gets returned through a Promise
const stream = examplePass.generate();
res.set({
"Content-Type": "application/vnd.apple.pkpass",
"Content-disposition": `attachment; filename=${passName}.pkpass`
});
stream.pipe(res);
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
requireTLS: true,
auth: {
user: 'email@gmail.com',
pass: 'password'
}
});
let mailOptions = {
from: 'email@gmail.com',
to: userEmail,
subject: "You're on your way to ",
html: '<h1>Testing email</h1>',
attachments: [
{
filename: 'Event.pkpass',
contentType: 'application/vnd.apple.pkpass',
content: stream
}
]
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error.message);
}
console.log('success');
});
let transporter=nodeEmailer.createTransport({
主机:“smtp.gmail.com”,
港口:587,
安全:错误,
要求:正确,
认证:{
用户:'email@gmail.com',
通行证:“密码”
}
});
让邮件选项={
发件人:'email@gmail.com',
收件人:userEmail,
主题:“你正在去的路上”,
html:“测试电子邮件”,
附件:[
{
文件名:“Event.pkpass”,
contentType:'application/vnd.apple.pkpass',
内容:流
}
]
};
transporter.sendMail(邮件选项,(错误,信息)=>{
如果(错误){
返回console.log(错误消息);
}
console.log('success');
});
您可以发布一个指向您生成的.pkpass捆绑包的链接吗?文件大小是多少?当您尝试在设备上打开时,控制台日志会显示什么作为不打开它的原因?控制台不会记录任何错误,它只会显示我上面在设备上发布的错误。我已经用钱包工具包的URL更新了这个问题&文件大小是“零KB”,现在我正在阅读,这可能是它不起作用的原因@PassKit@PassKit你能帮我一下或者给我一些建议吗?这是node.js的问题,我不是node专家。我猜您需要从流中发送字节,而不是原始的steam对象。您可以发布一个指向生成的.pkpass捆绑包的链接吗?文件大小是多少?当您尝试在设备上打开时,控制台日志会显示什么作为不打开它的原因?控制台不会记录任何错误,它只会显示我上面在设备上发布的错误。我已经用钱包工具包的URL更新了这个问题&文件大小是“零KB”,现在我正在阅读,这可能是它不起作用的原因@PassKit@PassKit你能帮我一下或者给我一些建议吗?这是node.js的问题,我不是node专家。我猜您需要从流中发送字节,而不是原始的steam对象。