0

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

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

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

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

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

4

1 回答 1

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;
}
}
于 2014-08-05T09:26:42.150 回答