web-dev-qa-db-ja.com

sendEmailを使用する場合、fromアドレスを変更することは可能ですか?

MailApp.sendEmailを使用して送信された電子メールのFROMアドレスを変更するためのオプションがあるかどうかと思います。

Webアプリとして公開されるフォームを作成しました。学生はフォームに記入して送信し、メールを受け取ります。メールの返信先アドレスと送信者名を変更する方法を確認しました。私はスクリプトの所有者であり、アプリは私として実行されているので、電子メールが自分のアドレスを差出人アドレスとして使用していることはわかっています。

差出人アドレスを別の人、この場合はインストラクターに属するように設定する方法はありますか?これを達成する1つの方法は、彼をスクリプトの所有者にして、アプリの再公開について説明することだと思いますが、それを彼に渡したくありません。 (私が見たところ、スクリプトの所有者だけがスクリプトを公開できます。)

つまり、Fromアドレスは、スクリプトを作成しているプログラマーではなく、スクリプトが作成されるクライアントを表す必要があります。

スクリプトがSunの下にいる誰からも電子メールを送信できるようにするのは望ましい機能ではないことを理解しています。誰かが私の問題を解決する方法についてのアドバイスを持っているかどうか疑問に思っています。

ありがとう!

19
Carrie

グーグルはこれに柔軟ではありません-あなたが見ることができる唯一の「差出人」アドレスは、スクリプトを実行している権限を持つユーザーに属するものです。

「プログラマ」として実行する代わりに、[email protected]のような「ロボット」Googleアカウントを使用できます。スクリプトを自分で開発し、ロボットから再公開できます。

Google Appsドメイン内で、管理者はこの疑似ユーザーを作成し、必要に応じて設定を編集して、Google Apps Directoryから非表示にすることができます。

生徒が受け取るメールは、講師からのものではありませんが、あなたからのものでもありません。

7
Mogsdad

(MailApp.sendEmailの代わりに)GMailApp.sendMailを使用する場合、オプションの追加パラメーターとしてfromを指定できます: https://developers.google.com/apps-script/reference/gmail/gmail-app# sendEmail(String、String、String、Object)

指定できるのは、Gmailアカウントをすでに構成したエイリアスのみです。

13
chrisb

はい、できます。とても簡単です。複数のエイリアスがある場合は、ログを使用して、エイリアスがアレイのどの場所にあるかを判別します。次に、正しいアレイの場所があることをテストするには、ログでそれを使用します。

var aliases = GmailApp.getAliases()
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array

GmailApp.sendEmail('[email protected]','From an alias', 'A message from an alias!', {'from': aliases[0]});
6
mickolasjae

メールを送信したいアカウントにエイリアスを追加した場合のみ可能です。

重要:エイリアスを追加する必要があります手動目的のアカウントに追加します(Gmailでは[設定]、[アカウント]、[送信者]の順に移動します)

それを行うときは、スクリプトで「GmailApp.SendEmail()」というGmailAppメソッドを使用する必要があります。

最初に、Gmailアカウントからエイリアスを読み取る必要があります。

var myAliases = GmailApp.getAliases();エイリアスが1つだけあると想定しましょう。最初のエイリアスはインデックス0にあります-> myAliases[0]この場合、次のようなメソッドを使用できます。

GmailApp.sendEmail('[email protected]', 'subject', 'body', {from: myAliases[0], name:'Name of the Alias'});

それでおしまい。

1
korchix

上記のchrisbの回答 に基づいて構築したかったのですが、まだコメントすることはできません...

Chrisbが言ったように:

  1. フォーム専用のアカウントでalliasを作成します。
  2. Gmail.Appを使用して、作成したエイリアスの「から」メールを送信します。

次に、Google Appsスクリプトを作成して、そのエイリアスに送信されたメールを処理し、インストラクターからのメールが受信トレイに表示されるようにします。

0
RAWdaMedia

@RAWdaMediaと@mickolasjaeの回答にさらに基づいて、エイリアスメールを使用してHTMLメールを送信する場合は、次のようにします。

// this should contain data to be put in the variable in your html
var data = [data1, data2];
var html = HtmlService.createTemplateFromFile('your-html-file-name');

html.data = data;
var template = html.evaluate().getContent();

var subjectLine = "Your subject line";
var aliases = GmailApp.getAliases()

// this line sends the email using alias email
GmailApp.sendEmail(email, subjectLine, template, {from: aliases[0], htmlBody: template});

注意すべきいくつかの点:

  1. Gmailの設定で、使用するメールエイリアスがデフォルトとしてマークされていないことを確認します
  2. 複数ある場合は、使用するメールエイリアスのインデックスを確認し、それに応じてaliasesのインデックスを変更します。これにより、aliases[1]またはaliases[2]になる可能性があります。
0
azmirfakkri