【解決方法】Javascript / node.js インポート HTML ファイル

プログラミングQA


オンデマンドでメールを送信する node.js サーバーを作成しています。 変数「output」は、メールで送信したいものです。 インライン html を使用すると正常に動作しますが、代わりに完全な html ファイルをインポートしたいと考えています。

const { EmailClient } = require("@azure/communication-email");<br />
<br />
const connectionString = "<ACS_CONNECTION_STRING>";<br />
const sender = "<SENDER_EMAIL>";<br />
const toRecipients = {<br />
    to: [<br />
        { email: "<alice@contoso.com>", displayName: "Alice" },<br />
    ],<br />
};<br />
<br />
const client = new EmailClient(connectionString);<br />
const emailContent = {<br />
    subject: "Send email plain text - JS sample",<br />
  plainText: "",<br />
  // html: "<h3>Hi, this works</h3>", // WORKS<br />
  // html: "<object type="text/html" data="file.html"></object>", // // Doesn't work<br />
  html: "<link href="https://www.codeproject.com/Questions/5347369/file.html" rel="import" />", // // Doesn't work<br />
};<br />
<br />
async function main() {<br />
  try {<br />
    const emailMessage = {<br />
      sender: sender,<br />
      content: emailContent,<br />
      importance: 'low',<br />
      recipients: toRecipients,<br />
    };<br />
<br />
    const sendResult = await client.send(emailMessage);<br />
<br />
    if (sendResult && sendResult.messageId) {<br />
        const messageId = sendResult.messageId;     <br />
        if (messageId === null || messageId === undefined) {<br />
        console.log("Message Id not found.");<br />
        return;<br />
      }<br />
<br />
      console.log("Send email success, MessageId :", messageId);<br />
<br />
      let counter = 0;<br />
      const statusInterval = setInterval(async function () {<br />
        counter++;<br />
        try {<br />
          const sendStatusResult = await client.getSendStatus(messageId);<br />
            if (sendStatusResult) {<br />
                console.log(`Email status for {${messageId}} : [${sendStatusResult.status}]`);<br />
                if (sendStatusResult.status.toLowerCase() !== "queued" || counter > 12) {<br />
              clearInterval(statusInterval);<br />
            }<br />
          }<br />
        } catch (e) {<br />
          console.log("Error in checking send mail status: ",e);<br />
        }<br />
      }, 5000);<br />
    } else {<br />
      console.error("Something went wrong when trying to send this email: ", sendResult);<br />
    }<br />
  } catch (e) {<br />
      console.log("################### Exception occurred while sending email #####################", e);<br />
  }<br />
}<br />
<br />
main();

助けていただければ幸いです。

私が試したこと:

<br />
// html: "<h3>Hi, this works</h3>", // WORKS<br />
// html: "<object type="text/html" data="file.html"></object>", // // Doesn't work<br />
  html: "<link href="https://www.codeproject.com/Questions/5347369/file.html" rel="import" />", // // Doesn't work<br />

解決策 1

HTML ファイルを「インポート」しているわけではありません。 古い実験的なハックを使用して外部コンテンツを「インポート」し、HTML ファイルへの相対パスを与える HTML ドキュメントを送信しています。

この実験が行われたという事実は別として 2020 年 2 月に削除されました[^]、相対パスが受信者のコンピューターまたはメールサーバーに存在しないことはほぼ確実です。 もしそうで、なんらかの見落としによってメールクライアントがファイルの読み込みを許可した場合、彼らのコンピューター上のファイルがあなたのコンピューター上のファイルと同じコンテンツを持つ可能性はほとんどありません.

ファイルの内容を変数に読み込み、それを使用してメッセージ本文を作成する必要があります。

Node.js を使用したファイルの読み取り[^]

コメント

タイトルとURLをコピーしました