diff --git a/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java b/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java
index 2be61034d7733b54a92a9b90c3b0ef066045e132..7bfa3211ed3130a0181bad71d3a0bddced85b078 100644
--- a/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java
+++ b/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java
@@ -36,6 +36,16 @@ public class ScriptExecutorJob implements LaJob {
 
     @Override
     public void run(final LaJobRuntime runtime) {
+        final JobHelper jobHelper = ComponentUtil.getJobHelper();
+        try {
+            jobHelper.setJobRuntime(runtime);
+            process(runtime);
+        } finally {
+            jobHelper.setJobRuntime(null);
+        }
+    }
+
+    protected void process(final LaJobRuntime runtime) {
         if (!runtime.getParameterMap().containsKey(Constants.SCHEDULED_JOB)) {
             logger.warn(Constants.SCHEDULED_JOB + " is empty.");
             return;
diff --git a/src/main/java/org/codelibs/fess/exec/Crawler.java b/src/main/java/org/codelibs/fess/exec/Crawler.java
index ae18f29ae2de9926f94c45f940a5face7da23efb..8a40a260c5ac3f3a6be51bc33a51bf040725f11c 100644
--- a/src/main/java/org/codelibs/fess/exec/Crawler.java
+++ b/src/main/java/org/codelibs/fess/exec/Crawler.java
@@ -392,6 +392,7 @@ public class Crawler {
 
             logger.debug("\ninfoMap: {}\ndataMap: {}", infoMap, dataMap);
 
+            final DynamicProperties systemProperties = ComponentUtil.getSystemProperties();
             final Postbox postbox = ComponentUtil.getComponent(Postbox.class);
             CrawlerPostcard.droppedInto(postbox, postcard -> {
                 postcard.setFrom(fessConfig.getMailFromAddress(), fessConfig.getMailFromName());
@@ -418,6 +419,7 @@ public class Crawler {
                 } else {
                     postcard.setStatus(Constants.FAIL);
                 }
+                postcard.setJobname(systemProperties.getProperty("job.runtime.name", StringUtil.EMPTY));
             });
         }
     }
diff --git a/src/main/java/org/codelibs/fess/helper/JobHelper.java b/src/main/java/org/codelibs/fess/helper/JobHelper.java
index 12c6ae491904c85a96f3f0c2433d0d3357c354ad..ad538da3aa37830afa103ed4dac13fbff6f863d8 100644
--- a/src/main/java/org/codelibs/fess/helper/JobHelper.java
+++ b/src/main/java/org/codelibs/fess/helper/JobHelper.java
@@ -35,6 +35,7 @@ import org.codelibs.fess.util.ComponentUtil;
 import org.dbflute.optional.OptionalThing;
 import org.lastaflute.job.JobManager;
 import org.lastaflute.job.LaCron;
+import org.lastaflute.job.LaJobRuntime;
 import org.lastaflute.job.LaScheduledJob;
 import org.lastaflute.job.key.LaJobUnique;
 import org.lastaflute.job.subsidiary.CronParamsSupplier;
@@ -44,6 +45,8 @@ public class JobHelper {
 
     protected int monitorInterval = 60 * 60;// 1hour
 
+    protected ThreadLocal<LaJobRuntime> jobRuntimeLocal = new ThreadLocal<>();
+
     public void register(final ScheduledJob scheduledJob) {
         final JobManager jobManager = ComponentUtil.getJobManager();
         jobManager.schedule(cron -> register(cron, scheduledJob));
@@ -186,4 +189,11 @@ public class JobHelper {
 
     }
 
+    public void setJobRuntime(LaJobRuntime runtime) {
+        jobRuntimeLocal.set(runtime);
+    }
+
+    public LaJobRuntime getJobRuntime() {
+        return jobRuntimeLocal.get();
+    }
 }
diff --git a/src/main/java/org/codelibs/fess/job/CrawlJob.java b/src/main/java/org/codelibs/fess/job/CrawlJob.java
index 5c9d06c2ab84b64b74d45938c99f152c329619a7..a348c1fd7036d98a5557b2f725bedcce1f41e830 100644
--- a/src/main/java/org/codelibs/fess/job/CrawlJob.java
+++ b/src/main/java/org/codelibs/fess/job/CrawlJob.java
@@ -18,12 +18,10 @@ package org.codelibs.fess.job;
 import static org.codelibs.core.stream.StreamUtil.stream;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Properties;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.servlet.ServletContext;
@@ -331,11 +329,7 @@ public class CrawlJob extends ExecJob {
         try {
             cmdList.add("-p");
             cmdList.add(propFile.getAbsolutePath());
-            try (FileOutputStream out = new FileOutputStream(propFile)) {
-                final Properties prop = new Properties();
-                prop.putAll(ComponentUtil.getSystemProperties());
-                prop.store(out, cmdList.toString());
-            }
+            createSystemProperties(cmdList, propFile);
 
             final File baseDir = new File(servletContext.getRealPath("/WEB-INF")).getParentFile();
 
diff --git a/src/main/java/org/codelibs/fess/job/ExecJob.java b/src/main/java/org/codelibs/fess/job/ExecJob.java
index dbdb533e6927f3af3442161db39c55af602c997c..606716dcf4230b36e51d2b2c76bf24520e75c1a4 100644
--- a/src/main/java/org/codelibs/fess/job/ExecJob.java
+++ b/src/main/java/org/codelibs/fess/job/ExecJob.java
@@ -16,16 +16,23 @@
 package org.codelibs.fess.job;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.FilenameFilter;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.codelibs.core.timer.TimeoutManager;
 import org.codelibs.core.timer.TimeoutTask;
+import org.codelibs.fess.Constants;
+import org.codelibs.fess.es.config.exentity.ScheduledJob;
 import org.codelibs.fess.util.ComponentUtil;
+import org.lastaflute.di.exception.IORuntimeException;
+import org.lastaflute.job.LaJobRuntime;
 
 public abstract class ExecJob {
 
@@ -157,4 +164,22 @@ public abstract class ExecJob {
             processTimeout = true;
         }, timeout, false);
     }
+
+    protected void createSystemProperties(final List<String> cmdList, final File propFile) {
+        try (FileOutputStream out = new FileOutputStream(propFile)) {
+            final Properties prop = new Properties();
+            prop.putAll(ComponentUtil.getSystemProperties());
+            final LaJobRuntime jobRuntime = ComponentUtil.getJobHelper().getJobRuntime();
+            if (jobRuntime != null) {
+                final ScheduledJob job = (ScheduledJob) jobRuntime.getParameterMap().get(Constants.SCHEDULED_JOB);
+                if (job != null) {
+                    prop.setProperty("job.runtime.id", job.getId());
+                    prop.setProperty("job.runtime.name", job.getName());
+                }
+            }
+            prop.store(out, cmdList.toString());
+        } catch (final IOException e) {
+            throw new IORuntimeException(e);
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java b/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java
index eccb7407039dad2fc28d47ca20e8c7ee976c3840..5697a143e4617af7c3fbe214038b766538a44901 100644
--- a/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java
+++ b/src/main/java/org/codelibs/fess/job/GenerateThumbnailJob.java
@@ -18,10 +18,8 @@ package org.codelibs.fess.job;
 import static org.codelibs.core.stream.StreamUtil.stream;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 
 import javax.servlet.ServletContext;
 
@@ -212,11 +210,7 @@ public class GenerateThumbnailJob extends ExecJob {
         try {
             cmdList.add("-p");
             cmdList.add(propFile.getAbsolutePath());
-            try (FileOutputStream out = new FileOutputStream(propFile)) {
-                final Properties prop = new Properties();
-                prop.putAll(ComponentUtil.getSystemProperties());
-                prop.store(out, cmdList.toString());
-            }
+            createSystemProperties(cmdList, propFile);
 
             final File baseDir = new File(servletContext.getRealPath("/WEB-INF")).getParentFile();
 
diff --git a/src/main/java/org/codelibs/fess/job/SuggestJob.java b/src/main/java/org/codelibs/fess/job/SuggestJob.java
index ea8e6c55fb9cc8b0da4d498cca41835e8c5ff6ed..bda2623b869e12868ec79652c229e1ed4eb963ae 100644
--- a/src/main/java/org/codelibs/fess/job/SuggestJob.java
+++ b/src/main/java/org/codelibs/fess/job/SuggestJob.java
@@ -18,10 +18,8 @@ package org.codelibs.fess.job;
 import static org.codelibs.core.stream.StreamUtil.stream;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 
 import javax.servlet.ServletContext;
 
@@ -194,11 +192,7 @@ public class SuggestJob extends ExecJob {
         try {
             cmdList.add("-p");
             cmdList.add(propFile.getAbsolutePath());
-            try (FileOutputStream out = new FileOutputStream(propFile)) {
-                final Properties prop = new Properties();
-                prop.putAll(ComponentUtil.getSystemProperties());
-                prop.store(out, cmdList.toString());
-            }
+            createSystemProperties(cmdList, propFile);
 
             final File baseDir = new File(servletContext.getRealPath("/WEB-INF")).getParentFile();
 
diff --git a/src/main/java/org/codelibs/fess/mylasta/mail/CrawlerPostcard.java b/src/main/java/org/codelibs/fess/mylasta/mail/CrawlerPostcard.java
index 9b144b8e99b61262ed14b438d75da247fb724ff8..875a1921b801177cb7fb346d79e333c2e78671fe 100644
--- a/src/main/java/org/codelibs/fess/mylasta/mail/CrawlerPostcard.java
+++ b/src/main/java/org/codelibs/fess/mylasta/mail/CrawlerPostcard.java
@@ -50,9 +50,9 @@ public class CrawlerPostcard extends LaTypicalPostcard {
 
     @Override
     protected String[] getPropertyNames() {
-        return new String[] { "hostname", "webFsCrawlStartTime", "webFsCrawlEndTime", "webFsCrawlExecTime", "webFsIndexExecTime",
-                "webFsIndexSize", "dataCrawlStartTime", "dataCrawlEndTime", "dataCrawlExecTime", "dataIndexExecTime", "dataIndexSize",
-                "crawlerStartTime", "crawlerEndTime", "crawlerExecTime", "status" };
+        return new String[] { "hostname", "jobname", "webFsCrawlStartTime", "webFsCrawlEndTime", "webFsCrawlExecTime",
+                "webFsIndexExecTime", "webFsIndexSize", "dataCrawlStartTime", "dataCrawlEndTime", "dataCrawlExecTime", "dataIndexExecTime",
+                "dataIndexSize", "crawlerStartTime", "crawlerEndTime", "crawlerExecTime", "status" };
     }
 
     // ===================================================================================
@@ -109,6 +109,15 @@ public class CrawlerPostcard extends LaTypicalPostcard {
         registerVariable("hostname", hostname);
     }
 
+    /**
+     * Set the value of jobname, used in parameter comment. <br>
+     * Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
+     * @param jobname The parameter value of jobname. (NotNull)
+     */
+    public void setJobname(String jobname) {
+        registerVariable("jobname", jobname);
+    }
+
     /**
      * Set the value of webFsCrawlStartTime, used in parameter comment. <br>
      * Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
diff --git a/src/main/resources/mail/crawler.dfmail b/src/main/resources/mail/crawler.dfmail
index 4dc8c0a1c9e2e65ac1ae7d24f0c23258b15d08c9..e01fc21b7fbfbf27f5f7cda5ed26e564f75dff22 100644
--- a/src/main/resources/mail/crawler.dfmail
+++ b/src/main/resources/mail/crawler.dfmail
@@ -6,6 +6,7 @@ subject: [FESS] Crawler completed: /*pmb.hostname*/
 >>>
 --- Server Info ---
 Host Name: /*pmb.hostname:orElse('Unknown')*/
+Job Name: /*pmb.jobname:orElse('Unknown')*/
 
 --- Web/FileSystem Crawler ---
 Start Time: /*pmb.webFsCrawlStartTime:orElse('-')*/