如何使用apex发送不同对象的多个附件.xls文件

时间:2013-12-26 05:57:56

标签: apex

如何为联系人帐户对象编写apex类,并通过单个邮件发送电子邮件作为附件。

我想要2个对象的联系人和帐户对象,并在单个邮件中发送2个不同对象的电子邮件是否可能???

向一个电子邮件添加多个附件是我的直接要求,但我在一个顶点类中添加了2个对象soql查询,但我只获得第一个2次作为附件

mail1 .setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc,csvAttc1});

我将csvattc文件作为附件获取2次,但我没有将csvattc1文件作为附件获取

1 个答案:

答案 0 :(得分:2)

您使用的是Oracle APEX吗? 如果您查看APEX文档:

https://docs.oracle.com/database/121/AEAPI/apex_mail.htm#AEAPI343

您会发现,您可以使用以下方法轻松添加不同的文件:

DECLARE l_id number;
BEGIN
   l_id := apex_mail.send( p_to        => 'fred@flintstone.com',
                   p_from      => 'barney@rubble.com',
                   p_subj      => 'APEX_MAIL with attachment',
                   p_body      => 'Please review the attachment.',
                   p_body_html => '<b>Please</b> review the attachment' );

FOR c1 IN (SELECT filename, blob_content, mime_type
             FROM apex_application_files
            WHERE ID IN (123,456)) LOOP
--
apex_mail.add_attachment( p_mail_id => l_id,
                       p_attachment => c1.blob_content,
                         p_filename => c1.filename,
                        p_mime_type => c1.mime_type);
  END LOOP;
  COMMIT;
END;
/

对于APEX Salesforce,这里有一个解决方案(来源:https://developer.salesforce.com/forums/?id=906F0000000904xIAA):

public class sendEmail {
public String subject { get; set; }
public String body { get; set; }

private final Account account;

// Create a constructor that populates the Account object 

public sendEmail() {
    account = [SELECT Name, 
              (SELECT Contact.Name, Contact.Email FROM Account.Contacts) 
               FROM Account 
               WHERE Id = :ApexPages.currentPage().getParameters().get('id')];
}

public Account getAccount() {
    return account;
}

public PageReference send() {
    // Define the email 
    Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage(); 
    // Reference the attachment page and pass in the account ID 
    Integer numAtts=[SELECT count() FROM attachment WHERE parentid=: account.Id];
    system.debug('Number of Attachments Atts = '+ numAtts);
    List<Attachment> allAttachment = new List<Attachment>();
    allAttachment = [SELECT Id, Name, ContentType, Body FROM Attachment WHERE parentid =: account.Id];
    // Create the email attachment 
*****        List<Messaging.Emailfileattachment> efaList = new List<Messaging.Emailfileattachment>();

    // try{ 
    if(numAtts > 0){
            for (Integer i = 0; i < numAtts; i++){
                system.debug(allAttachment[i].Name);
*****Messaging.Emailfileattachment efa = new Messaging.Emailfileattachment();<br>           efa.setFileName(allAttachment[i].Name);
                efa.setBody(allAttachment[i].Body);
                efa.setContentType(allAttachment[i].ContentType);
*****efaList.add( efa );
            }
    }
     // } catch (ListException  e){
        // |DEBUG|List index out of bounds: 2
     //         system.debug( e.getMessage() );
    // } 

    String addresses;
    if (account.Contacts[0].Email != null) {
        addresses = account.Contacts[0].Email;
        // Loop through the whole list of contacts and their emails 

        for (Integer i = 1; i < account.Contacts.size(); i++) {
            if (account.Contacts[i].Email != null) {
                addresses += ':' + account.Contacts[i].Email;
            }
        }
    }

    String[] toAddresses = addresses.split(':', 0);

    // Sets the paramaters of the email 

    email.setSubject( subject );
    email.setToAddresses( toAddresses );
    email.setPlainTextBody( body );
    //email.setFileAttachments(new Messaging.EmailFileAttachment[] {List<efa>()});
    if(numAtts > 0){
******          email.setFileAttachments(efaList );
    }

    // Sends the email 
    Messaging.SendEmailResult [] r = 
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] {email});   
    return null;
}
}