userinfo.getuseremail()在salesforce中返回noreply@salesforce.com

时间:2013-04-07 02:35:07

标签: salesforce apex-code

我在salesforce中创建了一个包,该包将使用用户的电子邮件ID发出http callout请求,以获取该电子邮件的数据并将数据添加到某个自定义对象。但是当我尝试使用UserInfo.getUserEmail()作为请求参数但是它使用noreply@salesforce.com发出请求时。当我在开发帐户上运行它时,它确实有效。我也尝试过使用

1.String userName = UserInfo.getUserName();
2.User activeUser = [Select Email From User where Username = : userName limit 1];
3.String userEmail = activeUser.Email;

但是第2行给了我一个错误List has no rows for assignment to SObject

这是我的第一个salesforce包,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

https://salesforce.stackexchange.com/questions/10413/userinfo-getuseremail-returns-noreplysalesforce-com-in-salesforce

这就是问题所在。丹尼尔回答得很好。 对于遇到相同类似问题的人来说,这是因为预定作业在其服务器上作为“幻像”进程运行。因此,在使用installhandler或创建计划时,我们必须为其提供installedid。否则它不会对用户有任何了解。以某种方式保存installedid!

答案 1 :(得分:0)

List has no rows for assignment to SObject
找不到行时返回

。这不会解决问题,但最佳做法是将其分配到像

这样的列表中
List<User> activeUsers = [Select Email From User where Username = : userName];
if(activeUsers.size() > 0)
  User activeUser = activeUsers[0]; 

http://wiki.developerforce.com/page/Apex_Code_Best_Practices

要解决您的问题,您运行查询的两次之间的配置文件可能会因分配的权限不同而不同。如果您未设置对用户对象的读取权限,则会出现此类错误。