您使用的是 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;
}
}