+ Start a Discussion
papikopapiko 

APIでユーザ登録時にパスワードリセットメールをユーザに送付させない方法

お世話になっております。
掲題の件について質問させてください。

APIでユーザを新規作成する場合(Userオブジェクトに対してUpsertすることを想定)、
パスワードリセットメールを新規作成したユーザに送付させないように実装したいと思っています。

メール送付を制御することが可能となるオプションや設定の仕方はあるでしょうか。
または、パスワードリセットメールを送付しないようにする回避策はあるでしょうか。

よろしくお願いいたします。
Marty C.Marty C.

 papikoさん、こんにちは。常と申します。お手伝いになる機会を提供してありがとうございます。

APIでユーザを作成するとパスワードリセットメールを送付させないと思います。ちょうど今Apexでユーザを三つ作成して、System.resetPassword()をコールしなければパスワードリセットメールを受けません。下記は実験処理したコードです。

 

Profile standardUser = [
    SELECT Id
    FROM Profile
    WHERE Name = 'Standard User'
];

User john = new User(
    Alias = 'jdoe',
    Email = 'my@email.com',
    EmailEncodingKey = 'ISO-8859-1',
    FirstName = 'John',
    LanguageLocaleKey = 'en_US',
    LastName = 'Doe',
    LocaleSidKey = 'en_US',
    ProfileId = standardUser.Id,
    TimeZoneSidKey = 'America/New_York',
    Username = 'john.doe1@my.org.demo');

insert john;
// 以下のコードをアンコメントするとリセットメールを送付させます
//System.resetPassword(john.Id, true);

Marty C.Marty C.
実験した後でUserオブジェクトに対してupsertは不可能です。
papikopapiko
ご回答ありがとうございます。
説明不足で申し訳ないのですが、今回はApexは利用していません。

Visual BasicのコンソールアプリケーションでAPIを構築し、
実行はバッチで行います。

upsertは外部更新キーを使っています。

このAPIでUserオブジェクトを更新すると、パスワードリセットメールが送付されてしまいます。

---コード抜粋------------------
Private binding As sforce.SforceService
Dim u(1) As sforce.sObject
Dim u As sforce.User = New sforce.User

user.LastName = "Papiko"
user.Alias = "PAPIKO"
user.Email = "papiko@email.com"
user.・・・
user.・・・

u(0) = u

saveResult = binding.upsert("外部更新キー", u)
-----------------------------------

Visual BasicのコンソールアプリケーションでAPIを構築した場合、
パスワードリセットメールを送付させない方法はあるでしょうか?
Marty C.Marty C.
papikoさん、お返信が遅くなってすみません。

下記の提案はパースワードリセットメールを避ける方法ですかな。
  1. user.IsActive = false  ’ 不有効ユーザに多分メールを送付しません
  2. binding.upsert("外部更新キー", user)
  3. user.IsActive = true  ' 有効させることはメールを送付させないと思います
  4. binding.upsert("外部更新キー", user)