メール送信

  • オフィシャル
  • メール送信の制限
    • トランザクションあたりsendEmailを10回まで使用できます。
    • 単一メールは1日に最大5,000個の外部メールアドレスに送信できます。
      • アドレスが一意であるかどうかは考慮されません。
      • 組織の内部ユーザ(ポータルユーザを含む)に送信できるメールには制限はありません。
    • 一括メールは1日に最大5,000この外部メールアドレスに送信できます。
      • アドレスが一意であるかどうかは考慮されません。
      • 組織の内部ユーザ(ポータルユーザを含む)に送信できるメールには制限はありません。
  • Sampleコード
    // メールを送信する
    public void SendMail(List<String> toaddr, String subject, String body){
        String email = UserInfo.getUserEmail();
        List<String> toList = new List<String>{};
        for(String to: toaddr){
            toList.add(to);
        }
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setToAddresses(toList);
        message.setReplyTo(email);
        message.setSubject(subject);
        message.setPlainTextBody(body);
        message.setUseSignature(false);
        Messaging.sendEmail(new List<Messaging.SingleEmailMessage>{message});
    }
  • テストクラス

    @isTest(SeeAllData=false)
    private class CommonFunctionTEST {
    
        @TestSetup
        Static void setup(){
        }
        @isTest
        static void SendMail(){
            Test.startTest();
            CommonFunction  handler = new CommonFunction();
            List<String> toaddr = new List<String>();
            toaddr.add('test@example.com');
            String subject = 'subject';
            String body = 'body';
            handler.SendMail(toaddr, subject, body);
            Test.stopTest();
        }
    }
  • テンプレートを使用したメール送信
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    // メールテンプレートからメール送信内容を設定する
    EmailTemplate et = [SELECT Id, Subject, Body, HtmlValue FROM EmailTemplate WHERE name = 'XXXXXX'];
    et.Subject=et.Subject.replace('#Subject#', 'Subject詳細内容');
    et.HtmlValue=et.HtmlValue.replace('#ContactName#', 'お客様の名前');
    et.HtmlValue=et.HtmlValue.replace('#FileName#', cVer.Title);
    mail.setSubject(et.Subject);
    mail.setHtmlBody(et.HtmlValue);