2024年2月にGmailのポリシー変更が行われます。
本当にこのポリシーが適用されると、かなりの数のメールが届かなくなるでしょう。
個人的には、これだけでもプログラムからのメール送信にリスクを感じています。
セキュリティなんて、今後さらに厳しくなる一方です。
 サイト・サービス運営者は、そのための対応をその都度取ることになります。
SMTPを用いたメール送信のリスク
今後に予想されるのは、TLS 1.3への強制対応でしょうか。
 現在、TLS 1.2が広く普及しています。

でも、TLS 1.2はそこそこ古い技術です。
数年後には、TLS 1.3への対応が求められることになるのでしょう。
もしくは、TLS 1.2で致命的なセキュリティホールが見つかった場合ですね。
この場合、世の中は一気にTLS 1.3への移行を急ぐでしょう。
そうなると、TLS 1.2までしか対応できていないとメール送信をできなくなります。
古いOSなどでは、TLSのアップデートもそうそう簡単にはできません。
その結果、SMTPを用いたメール送信ができなくなります。
もう、メール送信には本当にウンザリです。
そうかと言って、メールがなくなることはないでしょうから・・・
GASによるメール送信
GASについては、次の記事で説明しています。
GASを用いた方法だと、ウンザリすることから解放されるかもしれません。
この方法なら、24時間で500通以内を無料でメール送信できます。
個人や小規模サービスなら、これで十分だとは思います。
課金すれば、送信できる件数を増やすことは可能です。
その方法ですが、以下の二つのクラスを用いる方法があります。
- GmailApp
 - MailApp
 
両方ともの前提条件として、Gmailのアカウントが作成済みとなります。
GmailAppクラスによるメール送信
function sendEmail() {
    var subject = "メールの件名";
    var body = "メールの本文";
    var recipient = "recipient@example.com";
    GmailApp.sendEmail(recipient, subject, body);
}
MailAppクラスによるメール送信
function sendEmail() {
    var subject = "メールの件名";
    var body = "メールの本文";
    var recipient = "recipient@example.com";
    MailApp.sendEmail(recipient, subject, body);
}
MailAppとGmailAppは似ています。
GmailAppの方が、メール送信時に小細工ができます。
その小細工により、送信元メールアドレスとエイリアスを変更できるのです。

MailAppは、小細工ができません。
 そのため、Gmailのメールアドレスとアカウント名がそのまま表示されます。

GASによるメール送信の動作検証
動作検証としては、実際の利用に沿って行います。
あくまで、GASはSMTPの代わりです。
プログラムからSMTPにアクセスしていた箇所をGASへのアクセスに変えます。
そのため、GASをAPI化する必要があります。
GASをAPI化するには、大きく分けて2つの方法があります。
- ウェブアプリ
 - 実行可能 API
 
実行可能 APIは、GCPでプロジェクトを作成する必要があります。
 GCPでプロジェクトについては、以下の記事内で説明しています。
簡単に言うと、手間が多くなり面倒ということです。
それに対して、ウェブアプリは簡単にできます。
その代わりセキュリティ面で劣ると言われています。
しかし、独自で認証を行えばそこはカバー可能です。
ということで、今回はウェブアプリでGASをデプロイします。

そうすると、次のように長いURLを取得できます。
 このURL対して、プログラムからアクセスすることになります。

なお、GASのコードは以下のようにしています。
function doPost(e) {
  // リクエストからデータを取得
  var key = e.parameter.key; // 認証キー
  var recipient = e.parameter.recipient; // 受信者のメールアドレス
  var subject = e.parameter.subject; // メールの件名
  var body = e.parameter.body; // メールの本文
  if (key=="一意の文字列") {
    // メールを送信
    MailApp.sendEmail(recipient, subject, body);
    // 応答を返す
    return ContentService.createTextOutput("メール送信成功");
  } else {
   // 応答を返す
    return ContentService.createTextOutput("認証失敗");
  }
}
あとは、取得したURLに向けてHTTPアクセスを行うだけです。
TLS 1.2とかTLS 1.3とか関係ありません。
Pythonでは、以下のコードでアクセス可能です。
import requests
def send_email(key, recipient, subject, body):
    url = 'https://script.google.com/macros/s/●●●/exec'
    data = {
        'key': key,
        'recipient': recipient,
        'subject': subject,
        'body': body
    }
    response = requests.post(url, data=data)
    print(response.text)
# 使用
key = "一意の文字列"
email = "example@example.com"
subject = "タイトル"
body = "メール本文"
send_email(key, email, subject, body)
「一意の文字列」は、GAS上の内容を同じモノにします。
 これでセキュリティ的には、かなりレベルアップです。
そもそも、URL自体が第三者からは予測できませんけどね。
あと、Gmailアドレスに送信した場合、次のようなメールヘッダーの内容になります。

MailAppだと、2024年2月以降も問題ありません。
そりゃ、Gmailから送信しているのと同じことなので当然ですかね。
なお、「●●●@gmail.com」のGmail送信済みに該当メールがあることを確認できます。
  
  
  
  




