เทมเพลตอีเมล Visualforce ใน Salesforce

เผยแพร่แล้ว: 2021-05-13

ด้วยเทมเพลตอีเมล Visualforce ผู้ใช้สามารถส่งอีเมลที่กำหนดเป้าหมายและเป็นส่วนตัวได้ ผู้สร้างเทมเพลตสามารถใช้ภาษาการเขียนโปรแกรม Visualforce อันทรงพลังเพื่อสร้างเนื้อหาอีเมลที่เป็นเทมเพลต

นักพัฒนาและผู้ดูแลระบบสามารถใช้ Visualforce เพื่อสร้างเทมเพลตอีเมล ข้อดีของการใช้ Visualforce เหนือเทมเพลตอีเมล HTML มาตรฐานคือ Visualforce ช่วยให้คุณสามารถดำเนินการขั้นสูงกับข้อมูลที่ส่งไปยังผู้รับได้

เทมเพลตอีเมล Visualforce ทั้งหมดต้องอยู่ภายในแท็ก <messaging:emailTemplate> เดียว ซึ่งคล้ายกับหน้า Visualforce ปกติที่กำหนดไว้ภายในแท็ก <apex:page> เดียว

  • แท็ก <messaging:emailTemplate> ต้องมีแท็ก <messaging:htmlEmailBody> เดียวหรือแท็ก <messaging:plainTextEmailBody> เดียว
  • ส่วนประกอบ Visualforce มาตรฐานหลายอย่างไม่พร้อมใช้งานภายใน <messaging:emailTemplate> ซึ่งรวมถึง <apex:detail>,<apex:pageBlock> และส่วนประกอบ pageBlock ที่เกี่ยวข้องทั้งหมด และส่วนประกอบอินพุตทั้งหมด เช่น <apex:form> หากคุณพยายามบันทึกเทมเพลตอีเมล Visualforce ด้วยส่วนประกอบเหล่านี้ ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น

ทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • หากคุณได้รับอนุญาตให้แก้ไขเทมเพลตสาธารณะ จากการตั้งค่า ให้ป้อนเทมเพลตอีเมลในกล่องค้นหาด่วน จากนั้นเลือกเทมเพลตอีเมลแบบคลาสสิก
  • หากคุณไม่ได้รับอนุญาตให้แก้ไขเทมเพลตสาธารณะ ให้ไปที่การตั้งค่าส่วนบุคคลของคุณ ป้อนแม่แบบในกล่องค้นหาด่วน จากนั้นเลือกแม่แบบอีเมลหรือแม่แบบของฉัน แล้วแต่ว่าอย่างใดจะปรากฏขึ้น
  • 1. คลิกเทมเพลตใหม่
  • 2. เลือก Visualforce และคลิกถัดไป
  • 3. คุณไม่สามารถส่งอีเมลจำนวนมากโดยใช้เทมเพลตอีเมล Visualforce
  • 4. เลือกโฟลเดอร์ที่จะจัดเก็บแม่แบบ
  • 5. ในการทำให้แม่แบบพร้อมใช้งาน ให้เลือกกล่องกาเครื่องหมาย พร้อมใช้งาน
  • 6. ป้อนชื่อในชื่อเทมเพลตอีเมล
  • 7. หากจำเป็น ให้เปลี่ยนชื่อที่ไม่ซ้ำของเทมเพลต ชื่อเฉพาะนี้อ้างอิงถึงส่วนประกอบเมื่อคุณใช้ Lightning Platform API ในแพ็คเกจที่มีการจัดการ ชื่อเฉพาะนี้จะป้องกันความขัดแย้งในการตั้งชื่อในการติดตั้งแพ็คเกจ ชื่อนี้สามารถมีได้เฉพาะขีดล่างและอักขระที่เป็นตัวอักษรและตัวเลขคละกัน และต้องไม่ซ้ำกันในองค์กรของคุณ ต้องขึ้นต้นด้วยตัวอักษร ไม่มีการเว้นวรรค ไม่ลงท้ายด้วยขีดล่าง และไม่มีขีดล่างติดกันสองอัน ด้วยฟิลด์ ชื่อเฉพาะของเทมเพลต คุณสามารถเปลี่ยนชื่อส่วนประกอบบางอย่างในแพ็คเกจที่มีการจัดการ และการเปลี่ยนแปลงจะมีผลในองค์กรของสมาชิก
  • 8. หากต้องการ ให้เลือกชุดอักขระอื่นจากรายการแบบเลื่อนลงการเข้ารหัส
  • 9. ป้อนคำอธิบายสำหรับเทมเพลต ทั้งชื่อเทมเพลตและคำอธิบายมีไว้สำหรับใช้ภายในเท่านั้น
  • 10. ป้อนหัวเรื่องสำหรับเทมเพลตของคุณในหัวข้ออีเมล
  • 11. ในรายการดรอปดาวน์ประเภทผู้รับ เลือกประเภทของผู้รับที่จะรับอีเมลที่สร้างจากเทมเพลต
  • 12. หากต้องการ ในรายการดรอปดาวน์ที่เกี่ยวข้องกับประเภท ให้เลือกวัตถุที่เทมเพลตจะดึงข้อมูลเขตข้อมูลผสาน
  • 13. คลิกบันทึก
  • 14. ในหน้า ดูและแก้ไขเทมเพลตอีเมลใน Salesforce Classic ให้คลิก แก้ไขเทมเพลต
  • 15. ป้อนข้อความมาร์กอัปสำหรับเทมเพลตอีเมล Visualforce ของคุณ

หมายเหตุ: หากคุณกำลังรวมรูปภาพ เราแนะนำให้อัปโหลดไปยังแท็บเอกสารเพื่ออ้างอิงสำเนาของรูปภาพบนเซิร์ฟเวอร์ของเรา ตัวอย่างเช่น:

<apex:image id=”โลโก้” ค่า=”https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
id=015D0000000Dpwc&oid=00DD0000000FHaG&lastMod=127057656800″ />

  • 1. ในการระบุเวอร์ชันของ Visualforce และ API ที่ใช้กับเทมเพลตอีเมลนี้ ให้คลิก การตั้งค่าเวอร์ชัน หากคุณได้ติดตั้งแพ็คเกจที่มีการจัดการจาก AppExchange คุณยังสามารถระบุเวอร์ชันของแพ็คเกจที่มีการจัดการแต่ละแพ็คเกจที่จะใช้กับเทมเพลตอีเมลนี้ได้ โดยทั่วไป ให้ใช้ค่าเริ่มต้นสำหรับทุกเวอร์ชัน เพื่อเชื่อมโยงเทมเพลตอีเมลกับเวอร์ชันล่าสุดของ Visualforce, API และแพ็กเกจที่มีการจัดการแต่ละแพ็กเกจ เพื่อรักษาพฤติกรรมเฉพาะ คุณสามารถระบุเวอร์ชันเก่าของ Visualforce และ API หากต้องการเข้าถึงส่วนประกอบหรือฟังก์ชันที่แตกต่างจากเวอร์ชันล่าสุดของแพ็กเกจ คุณสามารถระบุเวอร์ชันที่เก่ากว่าของแพ็กเกจที่มีการจัดการได้
  • 2. หากต้องการดูรายละเอียดของเทมเพลต ให้คลิกบันทึก หากต้องการแก้ไขเทมเพลตต่อ ให้คลิกบันทึกด่วน มาร์กอัป Visualforce ของคุณต้องถูกต้องก่อนที่คุณจะบันทึกเทมเพลตได้
จ้างนักพัฒนา Salesforce Developer

/************************ เทมเพลตอีเมล 1 *************/
ตัวอย่างที่ 1: กรณีการติดต่อ
ผู้รับ

 <messaging:emailTemplate subject="ข้อมูลบัญชีและกรณี {!recipient.Name}" ผู้รับประเภท="ผู้ติดต่อ" >
<messaging:htmlEmailBody >
    <html>
    <head>
    </head>
    <body>
        เรียน {!recipient.Name},<br/>
        โปรดค้นหากรณีที่เปิดอยู่ทั้งหมดของคุณ:<br/>
        <ตาราง>
        <tr>
            <th>หมายเลขคดี</th>
            <th>ที่มาของเคส</th>
            <th>สถานะเคส</th>
        </tr>
        <apex:repeat value="{!recipient.cases}" var="case">
        <tr>
            <td>{!case.CaseNumber}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:repeat>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
ยินดีด้วย!
นี่คือเทมเพลตอีเมล Visualforce ใหม่ของคุณ
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

/********************** เทมเพลตอีเมล 2 ***************/
ตัวอย่างที่ 2: กรณีบัญชี
ผู้รับและผู้ที่เกี่ยวข้องกับ

 <messaging:emailTemplate subject="Account Case as Related To : {!relatedTo.Name}"ผู้รับประเภท="ติดต่อ" relatedToType="Account">
<messaging:htmlEmailBody >
    <html>
    <head>
    </head>
    <body>
        เรียน {!relatedTo.Name},<br/>
        โปรดค้นหากรณีที่เปิดอยู่ทั้งหมดของคุณ:<br/>
        <ตาราง>
        <tr>
            <th>หมายเลขคดี</th>
            <th>ที่มาของเคส</th>
            <th>สถานะเคส</th>
        </tr>
        <apex:repeat value="{!relatedTo.cases}" var="case">
        <tr>
            <td>{!case.CaseNumber}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:repeat>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
ยินดีด้วย!
นี่คือเทมเพลตอีเมล Visualforce ใหม่ของคุณ
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

ตัวอย่างที่ 3 : รายละเอียดค่าธรรมเนียมนักศึกษาโดยใช้ส่วนประกอบ

 <messaging:emailTemplate subject="Submission Of Student Fees"ตรงผู้รับประเภท="ติดต่อ" relatedToType="Student__c">
<messaging:htmlEmailBody >
    <c:StudentFeesDetails stu></c:StudentFeesDetails>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
ยินดีด้วย!
นี่คือเทมเพลตอีเมล Visualforce ใหม่ของคุณ
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

/****************** สิ้นสุดเทมเพลตอีเมล *************

/******************* ส่วนประกอบ ******************/

 <apex:component controller="StudentFeesController" access="global">
    <สไตล์>
    ตาราง{border:1px ของแข็ง #000;}
        td,th {เส้นขอบ: 1px ของแข็ง #000}
    </style>
    <apex:attribute name="stuId" assignTo="{!studentId}" type="Id" description="Student Id" />
    <h1>ค่าธรรมเนียมของคุณตกลง</h1>
    <ตาราง>
    <tr>
        <th>วันที่</th>
        <th>จำนวนเงิน</th>
    </tr>
    <apex:repeat value="{!feesDetails}" var="fee" >
        <tr>
            <td><apex:outputField value="{!fee.date__c}" /></td>
            <td>{!fee.amount__c}</td>
        </tr>
    </apex:repeat>
    </table>
</apex:component>

/************** ระดับ ******************/

 StudentFeesController ชั้นเรียนสาธารณะ{
    รหัสสาธารณะ studentId {get;set;}
    รายการสาธารณะ <Fees__c> getFeesDetails(){
        ส่งคืน [เลือก id, จำนวน__c, date__c จากค่าธรรมเนียม__c โดยที่ student_Id__c =: studentId];
    }
}

/******************* หน้าหนังสือ **********************/

 <apex:page controller="SendVFEmailTemplateController">
    <apex:form>
        <apex:pageBlock>
            <apex:pageBlockButtons>
                <apex:commandButton value="ส่งกรณีการติดต่อ" action="{!sendCases}"/>
                <apex:commandButton value="ส่งกรณีบัญชี" action="{!sendAccountCases}"/>
                <apex:commandButton value="ส่งรายละเอียดค่าธรรมเนียม" action="{!sendFeeDetails}"/>
                
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

/******************* ระดับ ********************/

 คลาสสาธารณะ SendVFEmailTemplateController{
    EmailTemplate และ;
    SendVFEmailTemplateController สาธารณะ (){
    
    }
    
    โมฆะสาธารณะ sendCases(){
        et = [เลือก Id ชื่อจาก EmailTemplate โดยที่ DeveloperName = 'Account_Cases'];
        Messaging.SingleEmailMessage semail = ใหม่ Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00328000005cwjF');
        semail.setTemplateId(et.Id);
        Messaging.sendEmail (ข้อความใหม่ SingleEmailMessage [] {semail});
    }
    
    โมฆะสาธารณะ sendAccountCases(){
        et = [เลือก Id ชื่อจาก EmailTemplate โดยที่ DeveloperName = 'Account_s_Cases'];
        Messaging.SingleEmailMessage semail = ใหม่ Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00335672305cwjF');
        semail.setTemplateId(et.Id);
        semail.setWhatId('00123400006azlA');
        Messaging.sendEmail (ข้อความใหม่ SingleEmailMessage [] {semail});
    }
    
    โมฆะสาธารณะ sendFeDetails(){
        et = [เลือก Id ชื่อจาก EmailTemplate โดยที่ DeveloperName = 'Student_Fees_Info'];
        Messaging.SingleEmailMessage semail = ใหม่ Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00335672305cwjF');
        semail.setTemplateId(et.Id);
        semail.setWhatId('a002320080DGNjx');
        Messaging.sendEmail (ข้อความใหม่ SingleEmailMessage [] {semail});        
    }
}

เราหวังว่าบล็อกนี้จะช่วยคุณในการเรียนรู้วิธีใช้เทมเพลตอีเมล Visualforce ใน Salesforce หากคุณต้องการบริการพัฒนา Salesforce โปรดติดต่อทีมที่ปรึกษา Salesforce ของเรา