You need to sign in to do that
Don't have an account?
Dev 長尾拓磨
サプライヤゲストユーザーがメールを送ると、差し込み項目にゲストユーザーのデータが入る
サプライヤゲストユーザーがメールテンプレートを使用して、
特定のユーザー宛てにメールを送った時、
差し込み項目には対象ユーザーの項目を差し込む予定なのですが、
サイトゲストユーザーのデータが差し込まれてしまいます。
例えば、メールテンプレートに{!User.Name}と書いておくと、ここには「サイトゲストユーザー」が入ってきてしまいます。
具体的な状況を書きます。
コミュニティのセルフ登録画面にて、Emailを入力させ登録します。
Apex側で
大雑把ですが、このような処理です。
テンプレートの本文に{! User.Name }を入れて、送信先ユーザーの名前を埋め込みたいと思っています。
しかし、ここにサイトゲストユーザーという名前が入ってしまうという事象です。
そこで、この原因が判別できないのですが、知っている方がいましたらご教授いただきたいと思います。
よろしくお願いします。
特定のユーザー宛てにメールを送った時、
差し込み項目には対象ユーザーの項目を差し込む予定なのですが、
サイトゲストユーザーのデータが差し込まれてしまいます。
例えば、メールテンプレートに{!User.Name}と書いておくと、ここには「サイトゲストユーザー」が入ってきてしまいます。
具体的な状況を書きます。
コミュニティのセルフ登録画面にて、Emailを入力させ登録します。
<apex:inputField value="{!registUser.Email}" />
Apex側で
List<User> userQuery = [select Id from User where Email = :registUser.Email LIMIT 1]; if(userQuery != null && userQuery .size() >0){ //メール送信 sendMail(userQuery [0].Id); }else{ //登録処理 } /***メール送信処理***/ public void sendMail(Id userId){ Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setTargetObjectId(userId); mail.setSenderDisplayName('Sender'); mail.setUseSignature(false); mail.saveAsActivity = false; EmailTemplate template = [select Id from EmailTemplate where DeveloperName = 'Mail_SupplierUserRegist' LIMIT 1]; mail.setTemplateID(template.Id); // ここで送る Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); }
大雑把ですが、このような処理です。
テンプレートの本文に{! User.Name }を入れて、送信先ユーザーの名前を埋め込みたいと思っています。
しかし、ここにサイトゲストユーザーという名前が入ってしまうという事象です。
そこで、この原因が判別できないのですが、知っている方がいましたらご教授いただきたいと思います。
よろしくお願いします。
今回の場合は事前にログインしないで処理を実行しているためサイトゲストユーザの情報がセットされていると思います。
All Answers
サイトゲストユーザというユーザとして処理が実行されます。
コミュニティユーザとしてセールスフォースにログインした後でしたら、
{!User.Name}で対象ユーザの名前がセットされると思います。
サイトゲストユーザは設定のユーザ一覧には表示されませんが、
ユーザIDをURLに直接入力すると詳細ページを表示することができます。
今回の場合は事前にログインしないで処理を実行しているためサイトゲストユーザの情報がセットされていると思います。
そもそもが勘違いだったのですね。{!User.Name}には受信者のレコードが差し込まれると勘違いしていました。
それでは、受信者のレコードを差し込む方法はないのでしょうか・・・?
少し調べてみたいと思います。
{!Receiving_User.fieldname}という記述をリファレンスで見つけました。
https://help.salesforce.com/articleView?id=merge_fields_email_templates.htm&language=ja&type=0
きっとUserを指定すると、Sending_Userという扱いになるのでしょうか。そこまで深く調べていませんが。
本来Userを差し込みに使うときは、Receiving か Sending をつけて明示的にすべきなのですね。
ありがとうございました。