メールは正常に送信されているので、添付ファイルを追加します。 そのため、この例をコピーしました: https :
そして、そのようなコードを作成しました:
const sendgrid: any = require('sendgrid')(process.env.sendgrid_key);
sendEmail(data: IEmailData): void {
const email: any = new sendgrid.Email();
email.addTo(data.emailTo);
for (let attachment in data.attachments)
this.addAttachment(email, attachment);
sendgrid.send(email, (error: any, json: string) => {
if (error)
console.log(error);
});
}
addAttachment(email: any, attachmentData: any): void {
const attachment = new sendgrid.Attachment();
attachment.setContent(attachmentData.content);
attachment.setType(attachmentData.type);
attachment.setFilename(attachmentData.filename);
attachment.setDisposition(attachmentData.disposition);
email.addAttachment(attachment);
}
しかし、 sendEmail
を呼び出すと、 sendgrid.Attachment is not a function
(2番目の関数の最初の行)と表示されます。
sendgridオブジェクトを印刷すると、次のようになります。
{ api_key: 'SG.DaV0L',
api_user: null,
options:
{ uriParts:
{ protocol: 'https',
host: 'api.sendgrid.com',
port: '',
endpoint: '/api/mail.send.json' },
uri: 'https://api.sendgrid.com/api/mail.send.json' },
version: '1.9.2',
Email: [Function: Email],
smtpapi: [Function: smtpapi],
send: [Function] }
ありがとうございました、
リチャード。
コードを読んだ後に理解しました。 githubのその例は完全に間違っています。 次のようになります。
addAttachment(email: any, attachmentData: any): void {
email.addFile(attachmentData);
}
ありがとう@RichardJECooke 、
さらに調査し、例を修正します。 ソリューションを共有するために時間を割いていただきありがとうございます!
郵送先住所とTシャツのサイズを[email protected]宛てにメールで送信する場合は、
ありがとう!
ここに添付ファイルの例があります: https :
サンプルリンクが機能していません。
これは新しいリンクです:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md
こんにちは、私はこの問題が解決されたことを知っていますが、これは私がGmailユーザーに埋め込み画像を送信しようとしたときに私が抱えていた問題です。
Gmailが課す追加のセキュリティのために画像をレンダリングしない理由がいくつかわかったので、通常のsrcタグを使用する代わりに、attachmentsパラメーターを使用してcontent_idを追加し、それが機能するかどうかを確認すると思いました。
送信されると、sendgridは不正なリクエストを返します。 これが私の方法です。
私は次のようにJPGをエンコードします:
let bitmap = fs.readFileSync(imageDir);
imageBase64URL = new Buffer(bitmap).toString('base64');
次に、エンコードされたJPGをattachments引数内のコンテンツフィールドに渡します。
mailer.send({
to: '[email protected]',
from: '[email protected]',
subject: `You have been removed from ${house.name} by ${removerName}`,
html: result,
attachments: [
{
content: imageBase64URL,
filename: 'cluttr-logo.jpg',
contentId: 'cluttr-logo'
},
]
});
最後に、CIDをそのようにejsファイルに埋め込みます。
html
<img alt="Logo" src="cid:cluttr-logo" width="60"
height="60"
うまくいけば、誰かが私が間違っていることについて何らかの洞察を持っています。 ありがとう。
@thinkingserious :こんにちは、トランザクションテンプレートを使用して添付ファイルを送信する方法を知っていますか?
@thinkingseriousには、メールにURL添付ファイルを追加する方法がありますが、メールに添付ファイルを追加する他の方法は何
よろしく、
モヒット
@thinkingserious :こんにちは、トランザクションテンプレートを使用して添付ファイルを送信する方法を知っていますか?
v3 APIを使用している場合は、 attachments
キーを追加しただけです。 content
はBase64でエンコードする必要があります
https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html
email = {
"from":{
"email":"[email protected]"
},
"personalizations":[
{
"to":[
{
"email" : "[email protected]"
}
],
"dynamic_template_data": {
}
}
],
"attachments": [
{
"content": "",
"filename" ""
}
]
"template_id":"someid"
}
サンプルリンクが機能していません。
これは新しいリンクです:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md
新しい新しいリンク: https :
最も参考になるコメント
サンプルリンクが機能していません。
これは新しいリンクです:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md