salesforce学习笔记(9)- 验证用户电子邮件

1、背景

从Spring ’22开始,Salesforce要求所有组织和Experience Cloud站点的所有用户验证他们的电子邮件地址。如果用户从未经验证的电子邮件地址发送电子邮件,Salesforce会拒绝此电子邮件消息,并不会完成发送。未经验证的电子邮件地址在用户验证他们的电子邮件地址重置密码之前不能用于发送邮件。

Summer '24 版本的发布,Salesforce 现在对所有组织和 Experience Cloud 站点强制执行此要求!详细内容请参考官方文档:Help And Training Community

如下如,图1验证过的邮箱可以用于发送邮件,图2未验证过的邮箱不可以发送邮件。

2、对应策略

应对这个情况的时候,根据需要验证用户的多少,我个人有两种方法:

2-1、手动逐条验证

当所需验证用户较少(如5条以内),可以选择手动逐条点击验证Link。

这里点击确定后,用户会收到两条邮件。

第一条:这条邮件中,点击Verify Account后,会跳转至重置密码的页面,如果选择这种方式,后续就可以通过账号密码的形式进行登录Salesforce。

走完这个流程,即完成用户验证。

2-2、通过Apex批量发送邮箱进行验证

当需要发送验证邮件的用户较多时,可以选择用如下方式,批量发送邮件。

global class SendVerificationEmailBatch implements Database.Batchable<SObject>, Database.AllowsCallouts {
    
    global Database.QueryLocator start(Database.BatchableContext bc) {
        // 查找未验证邮箱的用户
        String query = 'SELECT Id, Email FROM User WHERE Id = \'005J90000015zU9IAI\'';
        return Database.getQueryLocator(query);
    }

    global void execute(Database.BatchableContext bc, List<User> scope) {
        // 发送验证邮箱的电子邮件
        for (User user : scope) {
            try {
                // 使用实际的电子邮件模板ID替换
                String emailTemplateId = '2F00XJ9000000ca8r';
                
                // 调用异步邮件验证方法
                System.UserManagement.sendAsyncEmailConfirmation(user.Id, emailTemplateId, null, null);
            } catch (Exception e) {
                System.debug('Error sending email to user: ' + user.Id + ', error: ' + e.getMessage());
            }
        }
    }

    global void finish(Database.BatchableContext bc) {
        System.debug('Batch process finished.');
    }
}

然后,在Developer Console中执行上述批处理即可完成批量邮件发送,达到与2-1相同的验证用户邮箱的目的,但是这种验证方式,不支持用户的单点登录。

SendVerificationEmailBatch batch = new SendVerificationEmailBatch();
Database.executeBatch(batch, 100);

Copyright © 乔木船长

个人主页:乔木船长

欢迎转发点评和指正!

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值