+ Start a Discussion

share content file via email on click on button

Hi Team,
I have content file in my org 
ContentDocument doc = [SELECT Id,Title,Description FROM ContentDocument WHERE ID= '06911000000eZPPA2']
i need to share that file as attachment in email on click on button. i have designed vf page and class. I can able to share document but not in Content file. Help me to design it.

Apex Class
public class sendEmail {
    public sendEmail(ApexPages.Standardcontroller controller){

    public String subject {get; set;}
    public String body {get; set;}
    public blob attbody {get; set;}
    public String attname {get; set;}
    public String sendTo {get; set;}
    public String oppList {get; set;}
    public list<ContentVersion> docList {get; set;}
    private final Opportunity Opp;
    public blob file { get; set; }
    public ContentVersion ConVer { get; set; }

    // Constructor to get Opportunity data

    public sendEmail(){
        Opp = [SELECT Id, Name,(SELECT Contact.Name,Contact.Email,Contact.Id,Contact.AccountId,ContactId,Role, Contact.Account.Name 
                     FROM OpportunityContactRoles) FROM Opportunity WHERE Id = :ApexPages.currentPage().getParameters().get('id')
        docList = new list<ContentVersion>();
        EmailTemplate ev = [Select id, name,Subject,Body from EmailTemplate];
        subject = 'Test Subject';
        body = 'Test body';
	 public Opportunity getOpp() {
        return Opp;
    public PageReference send(){
        // Define the email
        Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage(); 

        EmailTemplate ev = [Select id, name,Subject, Body from EmailTemplate where name = 'Test Template'];
        String addresses;     

        String[] toAddresses = addresses.split(':',0);
        // Sets the paramaters of the email
        email.setSubject( subject );
        email.setToAddresses( toAddresses );
        email.setPlainTextBody( body );

        // Create the email attachment
        Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
        email.setFileAttachments(new Messaging.EmailFileAttachment[] {efa});

        // Sends the email
        Messaging.SendEmailResult [] r = 
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] {email});   
        return null;
    public String  docName {get; set;}
    public PageReference uploadPDF(){
        Document d = new Document();
        d.folderid = UserInfo.getUserId();
        d.name = this.attname;
        d.body = this.attbody;
        ContentVersion d = [SELECT Id,Title,Description FROM ContentDocument WHERE ID= '0690I0000097dNe'];
        d.versionData = file;
        d.title = 'from VF';
        d.pathOnClient ='/foo.txt';
        try {
            insert d;
          //  docName = d.name;
           docName = d.title;
        catch(exception e){
            apexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO,'e-'+e));
            attbody = null;
          //  d = new Document();
        return null;


Visualforce Page:
<!---- Created to Send Email from Button on Opportunity -->

<apex:page standardController="Opportunity" extensions="sendEmail" sidebar="false" showHeader="false">
    <apex:messages />
    <apex:form id="form">
        <apex:pageblock >
            <apex:pageBlockSection title="Send Email" Columns="1">
                 <div class= "Lookup">
                <apex:outputLabel value="Send To:"/>
                <apex:inputText value="{!sendTo}" id="sendTo"/>
                    <a href="#" id="link1" title="Lookup" tabindex="6" >
                        <img class="lookupIcon" title="Lookup" src="/s.gif" style="vertical-align:bottom;"/>
                <apex:outputLabel value="Subject:" for="Subject"/>
                <!--  <apex:inputText value="{!subject}" id="Subject" maxlength="80"/> -->
                <apex:inputText value="{!subject}" id="Subject" maxlength="80"/>
                <apex:outputLabel value="Body:" for="Body"/>
                <apex:inputTextarea value="{!body}" id="Body" rows="10" cols="80"/>
                <apex:inputFile value="{!attbody}" filename="{!attname}"/>
                <apex:commandButton value="Attach and Send" action="{!uploadPDF}"/>
                <apex:outputPanel id="PanelId">
                        <apex:repeat value="{!doclist}" var="str">
        position: relative;
        left: 181px;
        top: -30px;
I have checked muliplte questions in forum, community and sites nothing helps me.