เทมเพลตอีเมล 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 ของคุณต้องถูกต้องก่อนที่คุณจะบันทึกเทมเพลตได้
/************************ เทมเพลตอีเมล 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 ของเรา