function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
mikishiinamikishiina 

Outbound Emailで送信したメールの宛先について

Outbound Emailを使って、メール送信機能を実装し、送信自体は全く問題ない

のですが、その送信したメールをクライアント側で受信をした際に、何故か必ず

システム管理者のメールアドレスが、宛先に自動的に付け加えられて困って

おります。

 

システム管理者のアドレスが自動的に付け加えられないように、何かしらの設定で

制御することはできるのでしょうか。ご存知の方がいらっしゃいましたら、ご教示お願いいたします。

 

なお、一部のみ抽出していますが、ソースは以下のような感じで、最初の宛先の部分の「toList」には

指定したアドレスしか入っていないことは確認しています。

 

public void sendMessage(MailManage__c mmd){
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();

// 宛先アドレス
List<String> toList = new List<String>();
toList.add(mmd.ToAddress__c);
message.setToAddresses(toList);

 

// 送信者アドレス(返信先)
message.setReplyTo(mmd.FromAddress__c);

 

// 送信者名

message.setOrgWideEmailAddressId(mmd.FromAddressOwe__c);

 

// メール送信者ID
message.setTargetObjectId(userInfo.Id);
message.setSaveAsActivity(false);

// 件名
message.setSubject(mmd.Title__c);

// 本文を設定
message.setPlainTextBody(mmd.MainContent__c);

// メール送信実行
try{
System.debug('new Message is sent');
Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
System.debug('Message was sent');
}catch(System.DmlException e){
System.debug('We caught a DML exception: ' + e.getDmlMessage(0));
}

}

Best Answer chosen by Admin (Salesforce Developers) 
minoawminoaw

> message.setTargetObjectId(userInfo.Id);

 

このコードは入力したユーザのメールアドレスも宛先に追加しているようにみえますが、意図的なものでしょうか。

 

userInfo.Id がUserInfo.getUserId() と同じものを指しているとすると、

実行ユーザにもメールが送信することになりますが。。。

 

All Answers

ikouikou

コンプライアンスBCCメールが有効になっているとか・・?

mikishiinamikishiina

コンプライアンスBCCメールについては、無効になっています。

なお、標準機能の設定に関する部分については、下記のものは無効化するなどして

確認してみましたが、どうしてもメールクライアントで受信した際の「宛先」にシステム

管理者のメールアドレスが追加されてしまいます。

 

・設定→個人設定→メール→私のメール設定→自動BCC→いいえ

・設定→管理者設定→メール管理→コンプライアンスBCCメール→有効化チェックなし(設定なし)

・設定→管理者設定→メール管理→送信→不達管理の有効化→不達管理の有効化チェックなし

・設定→管理者設定→メール管理→送信→一括メール送信が完了したら、送信者に通知するチェックなし

 

ちなみに、他の方は送信メールを実装した際に、同様のことは発生していらっしゃらない

のでしょうか。標準機能の設定ベース、もしくはApexのメソッドでの設定で同様のことが発生

しないということでしたら、教えていただければと思っております。

 

※仕様かどうかもわかっておりませんので、もし仕様ということでしたら、その旨をご教示

  いただければと思います。

mikishiinamikishiina

なお、MassEmailMessage Methodは下記のやりたいことができないので使えないため、

SingleEmailMessage Methodでの実装になるかと思います。

 

・差出人のメールアドレスを指定したものにしたい。

・CC、BCCに指定したメールアドレスを入れたい。

・メールに添付ファイルをつけたい。

 

※上記がMassEmailMessage Methodで対応できるようでしたら、そのやり方を

  ご教示いただければ助かります。

ikouikou

少なくとも私のDeveloper環境で以下を実行しても、宛先にシステム管理者は入ってないですね。

Messaging.SingleEmailMessage mail  = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[] {'hoge@gmail.com'}; 
mail.setToAddresses(toAddresses);
mail.setSubject('single email');
mail.setPlainTextBody('hogehoge');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

 

mikishiinamikishiina

なるほど。そうなると、こちらの何かしら環境の問題なのかもしれません。

システム管理者のアドレスが付かない状態があるという事実がわかった

だけでも大変助かりました。(今まで、それすらわからず切り分けが

できていなかったので)

 

もう少し別の環境で試すなりして確認してみます。

ありがとうございます。

minoawminoaw

> message.setTargetObjectId(userInfo.Id);

 

このコードは入力したユーザのメールアドレスも宛先に追加しているようにみえますが、意図的なものでしょうか。

 

userInfo.Id がUserInfo.getUserId() と同じものを指しているとすると、

実行ユーザにもメールが送信することになりますが。。。

 

This was selected as the best answer
mikishiinamikishiina

ありがとうございます!まさにその通りでした!

無事、問題が解消しました。本当に助かりました!

 

「setTargetObjectId」はテンプレートの差し込みに使われるものだと

思っていたのですが、宛先に追加されるものだったとは思いませんでした。