sendMailでメール内に変な改行が入る時の対処法

sendMailでメールを送信するGASを組んでいたところ、

メール本文内で変な改行が入ることがありました。

どうしてかと思って色々試してみて、解決した方法があるので以下に紹介します。

また、その際に出た「オプションが設定できなくなる」「URLがリンク表示されない」などの対処法も記載しておきます。

sendMailで本文に改行が入る時の対処法

まず、sendMail で送る際の元のコードです。

これだと、変な改行が入る可能性があります。

function sendEmail(){
  const bccmail = "aaaa@example.com";
  const ccmail = "bbbb@example.com";

  var recipient="cccc@example.com"; //送信先
  var title = "件名を入力します";
  strBody = "本文をたくさん入力しています。\n\n https://www.google.co.jp/"


  /* メールを送信 */
  
  let response = MailApp.sendEmail(
      recipient, //Toアドレス
      title,  //メールタイトル
      strBody,//本文
      {
          name: "私からのメールだ",//差出人
          //bcc: bccmail
          //cc: ccmail,
          //attachments: [report] //添付をファイル
      }
  );
} 

その時に変な改行を防ぐようにしましょう。

以下のようにします。

function sendEmail(){
  const bccmail = "aaaa@example.com";
  const ccmail = "bbbb@example.com";

  var recipient="cccc@example.com"; //送信先
  var title = "件名を入力します";
  strBody = "本文をたくさん入力しています。\n\n https://www.google.co.jp/"
  strBody = strBody.replace(/\n/g,'<br>');//html形式の改行に変換する。

  /* メールを送信 */
  
  let response = MailApp.sendEmail(
     {
      to:recipient, //Toアドレス
      subject:title,  //メールタイトル
      htmlBody:strBody,//本文
      }
   );
} 

このようにすることで、変な変な改行を防ぐ事ができます。

本文をhtml形式に変換してあげる事ですね。

あべべ

ただ、このようにすると、少し困った事が出てきます。

それはURLも文字列として認識されてしまうこと。

オプションの設定の仕方が少し変わる事です。

オプションの設定方法

まずhtml形式で送信する場合のオプションの設定方法について紹介します。

function sendEmail(){
  const bccmail = "aaaa@example.com";
  const ccmail = "bbbb@example.com";
  const replyTo = "dddd@example.com";

  var recipient="cccc@example.com"; //送信先
  var title = "件名を入力します";
  strBody = "本文をたくさん入力しています。\n\n https://www.google.co.jp/"
  strBody = strBody.replace(/\n/g,'<br>');//html形式の改行に変換する。

  /* メールを送信 */
  
  let response = MailApp.sendEmail(
     {
      to:recipient, //Toアドレス
      subject:title,  //メールタイトル
      htmlBody:strBody,//本文
      //ここからオプション
      name="表示名",
      bcc: bccmail,
      replyTo: replyTo,//返信先のメアドを指定
      cc: ccmail,
      }
   );
} 

このようにtoなどと同じように、辞書型で設定してあげることによって、オプションを指定することができます。

URLをリンクとして認識させる方法

次にURLをリンクとして認識させる方法についてです。

html形式でメールを送信すると、メーラーによってはURLが文字列として表示されてしまいます。

そんな時には、リンクだということを表示させてあげる必要があります。

初めのコードを編集しましょう。

function sendEmail(){
  const bccmail = "aaaa@example.com";
  const ccmail = "bbbb@example.com";

  var recipient="cccc@example.com"; //送信先
  var title = "件名を入力します";
  //リンクをaタグで囲み、hrefでリンク先を指定する。
  strBody = "本文をたくさん入力しています。\n\n <a href="https://www.google.co.jp/">https://www.google.co.jp/</a>"
  strBody = strBody.replace(/\n/g,'<br>');//html形式の改行に変換する。

  /* メールを送信 */
  
  let response = MailApp.sendEmail(
     {
      to:recipient, //Toアドレス
      subject:title,  //メールタイトル
      htmlBody:strBody,//本文
      }
   );
} 

このようにすることで、きちんとリンクとして認識させることができます。

まとめ

今回は、GAS の sendMailで変な改行が入る時の対処法と、伴い影響するオプションとリンクの設定方法について解説しました。

少しでもあなたの役に立てれば幸いです。ではまた。

(Visited 6 times, 1 visits today)