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 © 乔木船长
个人主页:乔木船长
欢迎转发点评和指正!
标签:salesforce,Database,验证,用户,笔记,发送,电子邮件,邮件 From: https://blog.csdn.net/Cap7a1n/article/details/140104097