我正在开展一个项目,其中(已发送)电子邮件应保存到Salesforce并与相应的Salesforce联系人匹配。
创建新的电子邮件非常简单。例如,使用simple_salesforce python库,我的代码如下所示:
from simple_salesforce import Salesforce
[…]
sf = Salesforce(instance_url=instance_url, session_id=session_id)
sf.EmailMessage.create(
{'FromAddress': 'foo@example.com',
'ToAddress': 'bar@example.com',
'Subject': 'Email: Fancy Subject',
'TextBody': 'lorem ipsum dolor sit amet',
'Status': 2
})
这成功创建了一个新的EmailMessage,但邮件与联系人不匹配(假设bar@example.com是Salesfored中的现有联系人)。这可以在Salesforce UI中的许多位置看到。例如:
使用Salesforce UI创建新电子邮件时,关联正确完成。比较我的EmailMessage
对象与Salesforce生成的对象有一个明显的区别:ActivityId
没有为我的对象设置。
当我尝试设置ActivityId
时,我收到格式错误的请求异常INSUFFICIENT_ACCESS_OR_READONLY
。
是否可以使用API创建这些关联?
答案 0 :(得分:0)
相反,您可以将此邮件设置为联系人的附件。最好是如果您有一个自定义对象来存储邮件。
如果您打算使用附件,请给parentId作为联系ID。
如果您打算创建自定义对象,请将联系人对象设置为查找列(salesforce中的关系类型),这将允许您为新创建的列设置联系人ID。
PS-EmailMessage是另一种对象,无法存储。
答案 1 :(得分:0)
对我来说,解决方案是:
a)创建电子邮件对象时,当联系人存在于以下位置时,传递ToIds
,CcIds
,BccIds
而不是ToAddress
,CcAddress
,... SF。
b)不幸的是,没有FromIds
字段。因此,对于电子邮件的发件人,可以通过在以后创建EmailMessageRelation
来解决。例如:
sf.EmailMessageRelation.create({
'EmailMessageId': email_message_id, # id of the email message created before
'RelationAddress': from_contact_address, # sender email address
'RelationId': from_relation_id, # SF Human object ID (in my case user id or contact id)
'RelationType': 'FromAddress'
})