我的人员正在尝试使用自定义按钮从 VF 页面发送电子邮件。单击发送按钮时,会调用控制器类的发送方法来发送电子邮件。
public PageReference send() {
try {
Messaging.SingleEmailMessage singleEmailMsg = new Messaging.SingleEmailMessage();
singleEmailMsg.setTargetObjectId(emailMsg.ToIds[0]); // This line is causing the System.ListException: List index out of bounds: 0
if (emailMsg.BccAddress != null && emailMsg.BccAddress != '') {
singleEmailMsg.setBccAddresses(emailMsg.BccAddress.split(';'));
}
构造函数:
public SendQuoteEmail_Controller(ApexPages.StandardController controller) {
qtId=ApexPages.currentPage().getParameters().get('Id');
if(qtId != NULL)
qt = [SELECT Id, Name, Contact_Person__c, Contact_Person__r.Name, Contact_Person__r.Email, Opportunity__r.Id
FROM Quote__c
WHERE Id = :qtId];
ownerId = [Select Id,CreatedById from Quote__c where Id=:qtId].CreatedById;
emailMsg = new EmailMessage();
emailMsg.Subject = 'Quote for Opportunity';
emailMsg.ToIds = new List<Id>{qt.Contact_Person__c}; // This collection is coming out as empty in debug (emailMsg.ToIds.size() = 0)
emailMsg.fromAddress = UserInfo.getUserEmail();
emailMsg.HtmlBody = 'Please find attached the quote';
List<Attachment> lstAttachments = [SELECT Id,Name, Body, ContentType, Bodylength
FROM Attachment
WHERE ParentId = :qt.Id
ORDER BY CreatedDate DESC];
opp = [SELECT Id, Name, Quote_Sent__c
FROM Opportunity__c
WHERE Id = :qt.Opportunity__r.Id];
//Ended
}
}
令我惊讶的是,即使 qt.Contact_Person__c 字段中有一个值,emailMsg.ToIds[0] 也会引发异常。此外,emailMsg.ToIds 被调试为空。这可能是什么原因造成的?