在salesforce开发中,发送邮件是一个很常见的功能。比如在进入审批流以后的通过和拒绝的操作需要发送邮件给记录的owner,和其他系统交互以后更改了某些状态通知相关的User或者Contact等等。可以说,发送邮件在业务上是一个必不可少的环节。

salesforce提供了多种发送邮件的方式,比如SingleEmail,MassEmail,这里主要说一下SingleEmail.

SingleEmail操作位于Messaging.SingleEmailMessage类中,主要有两种方式发送邮件,一个是可以通过模板,一个是不需要借助模板。这里主要说一下相关主要方法:

  • public Void setToAddresses(String[] toAddresses):设置接收人的email地址;

  • public Void setCcAddresses(String[] ccAddresses):设置抄送人的email地址;

  • public Void setBccAddresses(String[] bccAddresses):设置私密抄送人的email地址;

  • public Void setCharset(String characterSet):设置email的内容的编码;

  • public Void setTargetObjectId(ID targetObjectId):当使用email template时,此方法是必须使用的。ID可以为contact/lead/user.默认email会发送此ID。而且使用此方法发送邮件,不会使email limit 加1,所以如果只是给org内部的user或者contact发送,可以使用此种方式减少一些相关限制。

  • public Void setSaveAsActivity(Boolean saveAsActivity):如果设置了targetObjectId,则需要对它赋值为false,默认为true;

  • public void setTreatTargetObjectAsRecipient(Boolean treatAsRecipient):设置targetObjectId是否作为接收人接收此邮件,默认是true,如果不想将targetObjectId作为接收人,则设置为false;

  • public Void setPlainTextBody(String plainTextBody):设置邮件body内容,如果body内容为普通的文本;

  • public Void setSubject(String subject):设置邮件标题;

  • public void setEntityAttachments(List<String> ids):设置邮件的附件,参数可以传递document ids;

  • public Void setTemplateId(ID templateId):设置email的template,可以通过模板发送相关邮件,如果使用email的template并且里面没有相关的format,可以不用设置body和subject;

  • public Void setHtmlBody(String htmlBody):设置邮件的body,如果body内容为html内容;

  • public Void setWhatId(ID whatId):如果template中使用了merge field,可以指定需要引用的object的ID,比如模板中使用了{!Account.Name},则需要设置whatId项为account的ID;

  • public Void setSenderDisplayName(String displayName):设置邮件的发件人的显示名称;

  • public Void setReplyTo(String replyAddress):设置接收人回复邮件的email地址;

其他方法可以自行查看。下面内容为不使用模板和使用模板demo.

一.不