Salesforce SingleEmailMessage和cc的问题
我有一个应用程序,如果所有的目的地字段(收件人:、抄送:、密件抄送:)都已填写,则可以正常工作,但如果其中一个字段为空,则会出现一个错误,表明存在无效的电子邮件地址。我使用文本输入字段,多个电子邮件地址用分号(;)分隔。如果输入字段为空,我不会为该选项分配任何内容。知道为什么会这样吗?setCcAddress和setbcaddress函数使用什么值来不显示任何内容。我尝试了几个(空列表,空列表) 请参阅下面的代码 分机:Salesforce SingleEmailMessage和cc的问题,salesforce,Salesforce,我有一个应用程序,如果所有的目的地字段(收件人:、抄送:、密件抄送:)都已填写,则可以正常工作,但如果其中一个字段为空,则会出现一个错误,表明存在无效的电子邮件地址。我使用文本输入字段,多个电子邮件地址用分号(;)分隔。如果输入字段为空,我不会为该选项分配任何内容。知道为什么会这样吗?setCcAddress和setbcaddress函数使用什么值来不显示任何内容。我尝试了几个(空列表,空列表) 请参阅下面的代码 分机: public class AffEngpdfExtension { pu
public class AffEngpdfExtension
{
public ID callersId;
private String transferUrl;
public String recipientEmail { get; set; }
public String ccEmail { get; set; }
public String bccEmail { get; set; }
public String subjectEmail { get; set; }
public String bodyEmail { get; set; }
public String docName { get; set; }
// Constructor
public AffEngpdfExtension(ApexPages.StandardController stdController) {
stdController.addFields(new List<String>{ 'Name', 'User_Email__c', 'Oversight_Email__c', 'Sales_Rep_Email__c' });
Affiliate_Consulting_Engagement__c affEngage;
affEngage = (Affiliate_Consulting_Engagement__c)stdController.getRecord();
callersId = stdController.getRecord().id;
this.recipientEmail = affEngage.User_Email__c;
ccEmail = affEngage.Oversight_Email__c + ';' + affEngage.Sales_Rep_Email__c;
List<Contact> senderEmail = [SELECT Id, Email FROM Contact WHERE pse__Salesforce_User__c=:UserInfo.getUserId() LIMIT 1];
bccEmail = senderEmail[0].Email;
subjectEmail = 'Affiliate Consulting Engagement ' + affEngage.Name + ' - ' + affEngage.Engagement_Code__c;
docName = affEngage.Name + '-' + affEngage.Engagement_Code__c;
}
public String TransferPage { get; set; }
// Action method to transfer to a PDF version of the current page !!!
// MUST set the value of TransferPage as part of this Action call !!!
public PageReference transferTopage() {
transferUrl = '/apex/' + TransferPage + '?scontrolCaching=1&id=' + callersId;
PageReference pdfPage = new PageReference(transferUrl);
System.Debug('transferTopage-transferUrl: ' + transferUrl);
return pdfPage;
}
// Email content...
public PageReference emailPdf() {
System.Debug('EmailPDF-TransferPage: ' + TransferPage);
if(String.isBlank(this.TransferPage)) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,
'Internal Error: missing TransferPage in pdfExtension'));
return null; // early out
}
if(String.isBlank(this.recipientEmail)) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,
'You must enter a Send To email address !'));
return null; // early out
}
if(String.isBlank(this.subjectEmail)) {
subjectEmail = TransferPage;
}
String tempstr = this.bodyEmail;
tempstr = tempstr.replaceall('[^\\W\\D]*','');
if (String.isBlank(tempstr)) {
bodyEmail = 'Document(s) attached for your review.';
}
// PageReference reportPage = ApexPages.currentPage();
transferUrl = '/apex/' + TransferPage + '?scontrolCaching=1&id=' + callersId;
PageReference pdfPage = new PageReference(transferUrl);
Blob reportPdf;
try {
reportPdf = pdfPage.getContentAsPDF();
}
catch (Exception e) {
reportPdf = Blob.valueOf(e.getMessage());
}
// Create email
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
List<String> addresses = new List<String>();
addresses.clear();
if (String.isBlank(this.recipientEmail)) {
addresses = this.recipientEmail.split(';');
message.setToAddresses(addresses);
} else
addresses.clear();
if (String.isBlank(this.ccEmail)) {
addresses = this.ccEmail.split(';');
message.setCcAddresses(addresses);
} else
addresses.clear();
if (String.isBlank(this.bccEmail)) {
addresses = this.bccEmail.split(';');
message.setBccAddresses(addresses);
} else
addresses.clear();
message.setSubject(subjectEmail);
message.setHtmlBody(bodyEmail);
// Attach PDF to email and send
Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
attachment.setContentType('application/pdf');
attachment.setFileName(TransferPage + '_' + docName + '.pdf');
attachment.setInline(false);
attachment.setBody(reportPdf);
message.setFileAttachments(new Messaging.EmailFileAttachment[]{ attachment });
Messaging.sendEmail(new Messaging.SingleEmailMessage[]{ message });
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO,
'Email with PDF attachment sent to ' + this.recipientEmail));
return null;
}
}
影响PdfExtension的公共类
{
公共ID调用器ID;
私有字符串传输URL;
公共字符串recipientEmail{get;set;}
公共字符串ccEmail{get;set;}
公共字符串bccEmail{get;set;}
公共字符串subjectEmail{get;set;}
公共字符串bodyEmail{get;set;}
公共字符串docName{get;set;}
//建造师
公共影响PDFExtension(ApexPages.StandardController stdController){
stdController.addFields(新列表{'Name'、'User\u Email\u c'、'supervision\u Email\u c'、'Sales\u Rep\u Email\u c'});
附属公司、咨询公司、参与公司、影响公司;
affEngage=(附属公司、咨询公司、参与公司)stdController.getRecord();
callersId=stdController.getRecord().id;
this.recipientEmail=affingage.User\u Email\uu\c;
ccEmail=affEngage.supervision\u Email\uuuuu c+“;”+affEngage.Sales\u Rep\u Email\uuu c;
List senderEmail=[选择Id,来自联系人的电子邮件,其中pse_uuSalesforce_uUser_uuC=:UserInfo.getUserId()限制1];
bccEmail=senderEmail[0]。电子邮件;
subjectEmail='Affiliate Consulting Engagement'+affEngage.Name+'-'+affEngage.Engagement\u Code\u c;
docName=affEngage.Name+'-'+affEngage.Engagement\u代码\uu c;
}
公共字符串传输页{get;set;}
//操作方法转移到当前页面的PDF版本!!!
//必须将TransferPage的值设置为此操作调用的一部分!!!
公共页面引用transferTopage(){
transferUrl='/apex/'+TransferPage+'?scontrolCaching=1&id='+callersId;
PageReference pdfPage=新的PageReference(transferUrl);
System.Debug('transferTopage-transferUrl:'+transferUrl);
返回pdfPage;
}
//电子邮件内容。。。
公共页面参考emailPdf(){
System.Debug('EmailPDF-TransferPage:'+TransferPage);
if(String.isBlank(this.TransferPage)){
ApexPages.addMessage(新的ApexPages.Message(ApexPages.Severity.ERROR),
“内部错误:pdfExtension中缺少TransferPage”);
返回null;//提前退出
}
if(String.isBlank(this.recipientEmail)){
ApexPages.addMessage(新的ApexPages.Message(ApexPages.Severity.ERROR),
'您必须输入发送到电子邮件地址!');
返回null;//提前退出
}
if(String.isBlank(this.subjectEmail)){
subjectEmail=TransferPage;
}
字符串tempstr=this.bodyEmail;
tempstr=tempstr.replaceall(“[^\\W\\D]*”,“”);
if(String.isBlank(tempstr)){
bodyEmail='随附供您审阅的文档';
}
//PageReference reportPage=ApexPages.currentPage();
transferUrl='/apex/'+TransferPage+'?scontrolCaching=1&id='+callersId;
PageReference pdfPage=新的PageReference(transferUrl);
Blob报告PDF;
试一试{
reportPdf=pdfPage.getContentAsPDF();
}
捕获(例外e){
reportPdf=Blob.valueOf(e.getMessage());
}
//创建电子邮件
Messaging.SingleEmailMessage=新建消息。SingleEmailMessage();
列表地址=新列表();
地址。清除();
if(String.isBlank(this.recipientEmail)){
地址=this.recipientEmail.split(“;”);
消息。设置为地址(地址);
}否则
地址。清除();
if(String.isBlank(this.ccEmail)){
addresses=this.ccEmail.split(“;”);
message.setccaddress(地址);
}否则
地址。清除();
if(String.isBlank(this.bccEmail)){
addresses=this.bccEmail.split(“;”);
消息.setbcaddress(地址);
}否则
地址。清除();
message.setSubject(subjectEmail);
message.setHtmlBody(bodyEmail);
//将PDF附加到电子邮件并发送
Messaging.EmailFileAttachment attachment=新建Messaging.EmailFileAttachment();
附件.setContentType('application/pdf');
附件.setFileName(TransferPage+'.'+docName+'.pdf');
附件.setInline(假);
附件.setBody(PDF格式);
message.setFileAttachments(新消息.EmailFileAttachment[]{attachment});
Messaging.sendmail(newmessaging.SingleEmailMessage[]{message});
ApexPages.addMessage(新的ApexPages.Message(ApexPages.Severity.INFO、,
'带有PDF附件的电子邮件发送至'+this.recipientEmail');
返回null;
}
}
VF页面:
<apex:page sidebar="false" showHeader="false" tabStyle="Account"
standardController="Affiliate_Consulting_Engagement__c"
extensions="AffEngpdfExtension"
applyHtmlTag="false" applyBodyTag="false" >
<apex:form >
<apex:pageBlock >
<apex:pageMessages ></apex:pageMessages>
<apex:pageBlockSection columns="1" >
<apex:pageBlockSectionItem dataStyle="text-align:left;">
<apex:outputLabel for="recipientEmail" value="To:"/>
<apex:inputText value="{!recipientEmail }" size="100"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem dataStyle="text-align:left;">
<apex:outputLabel for="ccEmail" value="cc: "/>
<apex:inputText value="{!ccEmail }" size="100"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem dataStyle="text-align:left;">
<apex:outputLabel for="recipientEmail" value="bcc:"/>
<apex:inputText value="{!bccEmail }" size="100"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem dataStyle="text-align:left;">
<apex:outputLabel for="subjectEmail" value="Email Subject (Optional)"/>
<apex:inputText value="{!subjectEmail }" size="100" />
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem dataStyle="text-align:left;">
<apex:outputLabel for="bodyEmail" value="Email Text (Optional)" />
<apex:inputTextarea value="{!bodyEmail}" rows="6" cols="20" richText="true" />
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem dataStyle="text-align:left;">
<apex:commandLink action="{!emailPdf }" value="Email PDF" styleClass="btn" id="btnEmail">
<apex:param name="TransferPage"
assignTo="{!TransferPage}"
value="AffiliateEngagementPdf" />
</apex:commandLink>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
<c:AffEngComponent Engage="{!Affiliate_Consulting_Engagement__c }" />
</apex:page>
忽略这个问题。我检查电子邮件地址的条件是反向的。我已经解决了