From 563adbec2af11d27e9e62bef8ecf92307632549d Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 11 Jun 2025 23:07:17 +0800 Subject: [PATCH] feat: allow configuring smtp sender display name --- internal/domain/access.go | 1 + internal/notify/providers.go | 1 + .../core/notifier/providers/email/email.go | 3 + .../access/AccessFormEmailConfig.tsx | 5 ++ .../node/NotifyNodeConfigFormEmailConfig.tsx | 10 +++ ui/src/i18n/locales/en/nls.access.json | 16 ++--- .../i18n/locales/en/nls.workflow.nodes.json | 63 ++++++++++--------- ui/src/i18n/locales/zh/nls.access.json | 10 +-- .../i18n/locales/zh/nls.workflow.nodes.json | 15 +++-- 9 files changed, 77 insertions(+), 47 deletions(-) diff --git a/internal/domain/access.go b/internal/domain/access.go index 36e9fb40..4cce40a2 100644 --- a/internal/domain/access.go +++ b/internal/domain/access.go @@ -168,6 +168,7 @@ type AccessConfigForEmail struct { Username string `json:"username"` Password string `json:"password"` DefaultSenderAddress string `json:"defaultSenderAddress,omitempty"` + DefaultSenderName string `json:"defaultSenderName,omitempty"` DefaultReceiverAddress string `json:"defaultReceiverAddress,omitempty"` } diff --git a/internal/notify/providers.go b/internal/notify/providers.go index 7dc63465..808d1717 100644 --- a/internal/notify/providers.go +++ b/internal/notify/providers.go @@ -71,6 +71,7 @@ func createNotifierProvider(options *notifierProviderOptions) (notifier.Notifier Username: access.Username, Password: access.Password, SenderAddress: maputil.GetOrDefaultString(options.ProviderServiceConfig, "senderAddress", access.DefaultSenderAddress), + SenderName: maputil.GetOrDefaultString(options.ProviderServiceConfig, "senderName", access.DefaultSenderName), ReceiverAddress: maputil.GetOrDefaultString(options.ProviderServiceConfig, "receiverAddress", access.DefaultReceiverAddress), }) } diff --git a/internal/pkg/core/notifier/providers/email/email.go b/internal/pkg/core/notifier/providers/email/email.go index c8405554..8a9de3f2 100644 --- a/internal/pkg/core/notifier/providers/email/email.go +++ b/internal/pkg/core/notifier/providers/email/email.go @@ -26,6 +26,8 @@ type NotifierConfig struct { Password string `json:"password"` // 发件人邮箱。 SenderAddress string `json:"senderAddress"` + // 发件人显示名称。 + SenderName string `json:"senderName,omitempty"` // 收件人邮箱。 ReceiverAddress string `json:"receiverAddress"` } @@ -86,6 +88,7 @@ func (n *NotifierProvider) Notify(ctx context.Context, subject string, message s } yak.From(n.config.SenderAddress) + yak.FromName(n.config.SenderName) yak.To(n.config.ReceiverAddress) yak.Subject(subject) yak.Plain().Set(message) diff --git a/ui/src/components/access/AccessFormEmailConfig.tsx b/ui/src/components/access/AccessFormEmailConfig.tsx index ae79794a..ae3ac5c9 100644 --- a/ui/src/components/access/AccessFormEmailConfig.tsx +++ b/ui/src/components/access/AccessFormEmailConfig.tsx @@ -54,6 +54,7 @@ const AccessFormEmailConfig = ({ form: formInst, formName, disabled, initialValu if (!v) return true; return validEmailAddress(v); }, t("common.errmsg.email_invalid")), + defaultSenderName: z.string().nullish(), defaultReceiverAddress: z .string() .nullish() @@ -115,6 +116,10 @@ const AccessFormEmailConfig = ({ form: formInst, formName, disabled, initialValu + + + + diff --git a/ui/src/components/workflow/node/NotifyNodeConfigFormEmailConfig.tsx b/ui/src/components/workflow/node/NotifyNodeConfigFormEmailConfig.tsx index b6bfed17..133ee7e4 100644 --- a/ui/src/components/workflow/node/NotifyNodeConfigFormEmailConfig.tsx +++ b/ui/src/components/workflow/node/NotifyNodeConfigFormEmailConfig.tsx @@ -33,6 +33,7 @@ const NotifyNodeConfigFormEmailConfig = ({ form: formInst, formName, disabled, i if (!v) return true; return validEmailAddress(v); }, t("common.errmsg.email_invalid")), + senderName: z.string().nullish(), receiverAddress: z .string() .nullish() @@ -65,6 +66,15 @@ const NotifyNodeConfigFormEmailConfig = ({ form: formInst, formName, disabled, i + } + > + + + Hosting provider: The provider that hosts your servers or cloud services for deploying certificates.

Cannot be edited after saving.", @@ -210,6 +210,8 @@ "access.form.email_password.placeholder": "please enter password", "access.form.email_default_sender_address.label": "Default sender email address (Optional)", "access.form.email_default_sender_address.placeholder": "Please enter default sender email address", + "access.form.email_default_sender_name.label": "Default sender display name (Optional)", + "access.form.email_default_sender_name.placeholder": "Please enter default sender display name", "access.form.email_default_receiver_address.label": "Default receiver email address (Optional)", "access.form.email_default_receiver_address.placeholder": "Please enter default receiver email address", "access.form.flexcdn_server_url.label": "FlexCDN server URL", diff --git a/ui/src/i18n/locales/en/nls.workflow.nodes.json b/ui/src/i18n/locales/en/nls.workflow.nodes.json index cf585594..293de758 100644 --- a/ui/src/i18n/locales/en/nls.workflow.nodes.json +++ b/ui/src/i18n/locales/en/nls.workflow.nodes.json @@ -39,8 +39,8 @@ "workflow_node.apply.form.challenge_type.placeholder": "Please select challenge type", "workflow_node.apply.form.provider.label": "DNS provider", "workflow_node.apply.form.provider.placeholder": "Please select DNS provider of the domains", - "workflow_node.apply.form.provider_access.label": "DNS provider authorization", - "workflow_node.apply.form.provider_access.placeholder": "Please select an authorization of DNS provider", + "workflow_node.apply.form.provider_access.label": "DNS provider credential", + "workflow_node.apply.form.provider_access.placeholder": "Please select an credential of DNS provider", "workflow_node.apply.form.provider_access.tooltip": "Used to manage DNS records during ACME DNS-01 challenge.", "workflow_node.apply.form.provider_access.button": "Create", "workflow_node.apply.form.aliyun_esa_region.label": "Alibaba Cloud ESA region", @@ -66,8 +66,8 @@ "workflow_node.apply.form.ca_provider.placeholder": "Please select a certificate authority", "workflow_node.apply.form.ca_provider.tooltip": "Used to issue SSL certificates.", "workflow_node.apply.form.ca_provider.button": "Configure", - "workflow_node.apply.form.ca_provider_access.label": "Certificate authority authorization", - "workflow_node.apply.form.ca_provider_access.placeholder": "Please select an authorization of the certificate authority", + "workflow_node.apply.form.ca_provider_access.label": "Certificate authority credential", + "workflow_node.apply.form.ca_provider_access.placeholder": "Please select an credential of the certificate authority", "workflow_node.apply.form.ca_provider_access.button": "Create", "workflow_node.apply.form.key_algorithm.label": "Certificate key algorithm", "workflow_node.apply.form.key_algorithm.placeholder": "Please select certificate key algorithm", @@ -115,8 +115,8 @@ "workflow_node.deploy.form.provider.label": "Deploy target", "workflow_node.deploy.form.provider.placeholder": "Please select deploy target", "workflow_node.deploy.form.provider.search.placeholder": "Search deploy target ...", - "workflow_node.deploy.form.provider_access.label": "Hosting provider authorization", - "workflow_node.deploy.form.provider_access.placeholder": "Please select an authorization of Hosting provider", + "workflow_node.deploy.form.provider_access.label": "Hosting provider credential", + "workflow_node.deploy.form.provider_access.placeholder": "Please select an credential of Hosting provider", "workflow_node.deploy.form.provider_access.tooltip": "Used to invoke API during deployment.", "workflow_node.deploy.form.provider_access.button": "Create", "workflow_node.deploy.form.certificate.label": "Certificate", @@ -130,10 +130,10 @@ "workflow_node.deploy.form.1panel_site_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.1panel_site_website_id.label": "1Panel website ID", "workflow_node.deploy.form.1panel_site_website_id.placeholder": "Please enter 1Panel website ID", - "workflow_node.deploy.form.1panel_site_website_id.tooltip": "You can find it on 1Panel WebUI.", + "workflow_node.deploy.form.1panel_site_website_id.tooltip": "You can find it on 1Panel dashboard.", "workflow_node.deploy.form.1panel_site_certificate_id.label": "1Panel certificate ID", "workflow_node.deploy.form.1panel_site_certificate_id.placeholder": "Please enter 1Panel certificate ID", - "workflow_node.deploy.form.1panel_site_certificate_id.tooltip": "You can find it on 1Panel WebUI.", + "workflow_node.deploy.form.1panel_site_certificate_id.tooltip": "You can find it on 1Panel dashboard.", "workflow_node.deploy.form.aliyun_alb_resource_type.label": "Resource type", "workflow_node.deploy.form.aliyun_alb_resource_type.placeholder": "Please select resource type", "workflow_node.deploy.form.aliyun_alb_resource_type.option.loadbalancer.label": "ALB load balancer", @@ -290,7 +290,7 @@ "workflow_node.deploy.form.apisix_resource_type.option.certificate.label": "SSL certificate", "workflow_node.deploy.form.apisix_certificate_id.label": "APISIX certificate ID", "workflow_node.deploy.form.apisix_certificate_id.placeholder": "Please enter APISIX certificate ID", - "workflow_node.deploy.form.apisix_certificate_id.tooltip": "You can find it on APISIX WebUI.", + "workflow_node.deploy.form.apisix_certificate_id.tooltip": "You can find it on APISIX dashboard.", "workflow_node.deploy.form.aws_acm_region.label": "AWS ACM Region", "workflow_node.deploy.form.aws_acm_region.placeholder": "Please enter AWS ACM region (e.g. us-east-1)", "workflow_node.deploy.form.aws_acm_region.tooltip": "For more information, see https://docs.aws.amazon.com/en_us/general/latest/gr/rande.html#regional-endpoints", @@ -367,16 +367,16 @@ "workflow_node.deploy.form.baotapanel_site_type.option.other.label": "Other sites", "workflow_node.deploy.form.baotapanel_site_name.label": "aaPanel site name", "workflow_node.deploy.form.baotapanel_site_name.placeholder": "Please enter aaPanel site name", - "workflow_node.deploy.form.baotapanel_site_name.tooltip": "You can find it on aaPanel WebUI.", + "workflow_node.deploy.form.baotapanel_site_name.tooltip": "You can find it on aaPanel dashboard.", "workflow_node.deploy.form.baotapanel_site_names.label": "aaPanel site names", "workflow_node.deploy.form.baotapanel_site_names.placeholder": "Please enter aaPanel site names (separated by semicolons)", "workflow_node.deploy.form.baotapanel_site_names.errmsg.invalid": "Please enter a valid aaPanel site name", - "workflow_node.deploy.form.baotapanel_site_names.tooltip": "You can find it on aaPanel WebUI.", + "workflow_node.deploy.form.baotapanel_site_names.tooltip": "You can find it on aaPanel dashboard.", "workflow_node.deploy.form.baotapanel_site_names.multiple_input_modal.title": "Change aaPanel site names", "workflow_node.deploy.form.baotapanel_site_names.multiple_input_modal.placeholder": "Please enter aaPanel site name", "workflow_node.deploy.form.baotawaf_site_name.label": "aaWAF site name", "workflow_node.deploy.form.baotawaf_site_name.placeholder": "Please enter aaWAF site name", - "workflow_node.deploy.form.baotawaf_site_name.tooltip": "You can find it on aaWAF WebUI.", + "workflow_node.deploy.form.baotawaf_site_name.tooltip": "You can find it on aaWAF dashboard.", "workflow_node.deploy.form.baotawaf_site_port.label": "aaWAF site SSL port", "workflow_node.deploy.form.baotawaf_site_port.placeholder": "Please enter aaWAF SSL port", "workflow_node.deploy.form.bunny_cdn_pull_zone_id.label": "Bunny CDN pull zone ID", @@ -394,10 +394,10 @@ "workflow_node.deploy.form.cdnfly_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.cdnfly_site_id.label": "Cdnfly site ID", "workflow_node.deploy.form.cdnfly_site_id.placeholder": "Please enter Cdnfly site ID", - "workflow_node.deploy.form.cdnfly_site_id.tooltip": "You can find it on Cdnfly WebUI.", + "workflow_node.deploy.form.cdnfly_site_id.tooltip": "You can find it on Cdnfly dashboard.", "workflow_node.deploy.form.cdnfly_certificate_id.label": "Cdnfly certificate ID", "workflow_node.deploy.form.cdnfly_certificate_id.placeholder": "Please enter Cdnfly certificate ID", - "workflow_node.deploy.form.cdnfly_certificate_id.tooltip": "You can find it on Cdnfly WebUI.", + "workflow_node.deploy.form.cdnfly_certificate_id.tooltip": "You can find it on Cdnfly dashboard.", "workflow_node.deploy.form.dogecloud_cdn_domain.label": "Doge Cloud CDN domain", "workflow_node.deploy.form.dogecloud_cdn_domain.placeholder": "Please enter Doge Cloud CDN domain name", "workflow_node.deploy.form.dogecloud_cdn_domain.tooltip": "For more information, see https://console.dogecloud.com/", @@ -409,7 +409,7 @@ "workflow_node.deploy.form.flexcdn_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.flexcdn_certificate_id.label": "FlexCDN certificate ID", "workflow_node.deploy.form.flexcdn_certificate_id.placeholder": "Please enter FlexCDN certificate ID", - "workflow_node.deploy.form.flexcdn_certificate_id.tooltip": "You can find it on FlexCDN WebUI.", + "workflow_node.deploy.form.flexcdn_certificate_id.tooltip": "You can find it on FlexCDN dashboard.", "workflow_node.deploy.form.gcore_cdn_resource_id.label": "Gcore CDN resource ID", "workflow_node.deploy.form.gcore_cdn_resource_id.placeholder": "Please enter Gcore CDN resource ID", "workflow_node.deploy.form.gcore_cdn_resource_id.tooltip": "For more information, see https://cdn.gcore.com/resources/list", @@ -421,7 +421,7 @@ "workflow_node.deploy.form.goedge_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.goedge_certificate_id.label": "GoEdge certificate ID", "workflow_node.deploy.form.goedge_certificate_id.placeholder": "Please enter GoEdge certificate ID", - "workflow_node.deploy.form.goedge_certificate_id.tooltip": "You can find it on GoEdge WebUI.", + "workflow_node.deploy.form.goedge_certificate_id.tooltip": "You can find it on GoEdge dashboard.", "workflow_node.deploy.form.huaweicloud_cdn_region.label": "Huawei Cloud CDN region", "workflow_node.deploy.form.huaweicloud_cdn_region.placeholder": "Please enter Huawei Cloud CDN region (e.g. cn-north-1)", "workflow_node.deploy.form.huaweicloud_cdn_region.tooltip": "For more information, see https://console-intl.huaweicloud.com/apiexplorer/#/endpoint", @@ -504,10 +504,10 @@ "workflow_node.deploy.form.lecdn_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.lecdn_certificate_id.label": "LeCDN certificate ID", "workflow_node.deploy.form.lecdn_certificate_id.placeholder": "Please enter LeCDN certificate ID", - "workflow_node.deploy.form.lecdn_certificate_id.tooltip": "You can find it on LeCDN WebUI.", + "workflow_node.deploy.form.lecdn_certificate_id.tooltip": "You can find it on LeCDN dashboard.", "workflow_node.deploy.form.lecdn_client_id.label": "LeCDN user ID (Optional)", "workflow_node.deploy.form.lecdn_client_id.placeholder": "Please enter LeCDN user ID", - "workflow_node.deploy.form.lecdn_client_id.tooltip": "You can find it on LeCDN WebUI.

Required when using administrator's authorization. It Must be the same as the user to which the certificate belongs.", + "workflow_node.deploy.form.lecdn_client_id.tooltip": "You can find it on LeCDN dashboard.

Required when using administrator's authorization. It Must be the same as the user to which the certificate belongs.", "workflow_node.deploy.form.local.guide": "Tips: If you are running Certimate in Docker, the \"Local\" refers to the container rather than the host.", "workflow_node.deploy.form.local_format.label": "File format", "workflow_node.deploy.form.local_format.placeholder": "Please select file format", @@ -580,13 +580,13 @@ "workflow_node.deploy.form.rainyun_rcdn_domain.tooltip": "For more information, see https://app.rainyun.com/apps/rcdn/list", "workflow_node.deploy.form.ratpanel_site_name.label": "RatPanel site name", "workflow_node.deploy.form.ratpanel_site_name.placeholder": "Please enter RatPanel site name", - "workflow_node.deploy.form.ratpanel_site_name.tooltip": "You can find it on RatPanel WebUI.", + "workflow_node.deploy.form.ratpanel_site_name.tooltip": "You can find it on RatPanel dashboard.", "workflow_node.deploy.form.safeline_resource_type.label": "Resource type", "workflow_node.deploy.form.safeline_resource_type.placeholder": "Please select resource type", "workflow_node.deploy.form.safeline_resource_type.option.certificate.label": "Certificate", "workflow_node.deploy.form.safeline_certificate_id.label": "SafeLine certificate ID", "workflow_node.deploy.form.safeline_certificate_id.placeholder": "Please enter SafeLine certificate ID", - "workflow_node.deploy.form.safeline_certificate_id.tooltip": "You can find it on SafeLine WebUI.", + "workflow_node.deploy.form.safeline_certificate_id.tooltip": "You can find it on SafeLine dashboard.", "workflow_node.deploy.form.ssh_format.label": "File format", "workflow_node.deploy.form.ssh_format.placeholder": "Please select file format", "workflow_node.deploy.form.ssh_format.option.pem.label": "PEM (*.pem, *.crt, *.key)", @@ -834,7 +834,7 @@ "workflow_node.deploy.form.wangsu_certificate_id.tooltip": "For more information, see https://cdn.console.wangsu.com/v2/index#/certificate/list", "workflow_node.deploy.form.webhook_data.label": "Webhook data (Optional)", "workflow_node.deploy.form.webhook_data.placeholder": "Please enter Webhook data to override the default value", - "workflow_node.deploy.form.webhook_data.tooltip": "Leave it blank to use the default Webhook data provided by the authorization.", + "workflow_node.deploy.form.webhook_data.tooltip": "Leave it blank to use the default Webhook data provided by the credential.", "workflow_node.deploy.form.webhook_data.guide": "
Supported variables:
  1. ${DOMAIN}: The primary domain of the certificate (CommonName).
  2. ${DOMAINS}: The domain list of the certificate (SubjectAltNames).
  3. ${CERTIFICATE}: The PEM format content of the certificate file.
  4. ${SERVER_CERTIFICATE}: The PEM format content of the server certificate file.
  5. ${INTERMEDIA_CERTIFICATE}: The PEM format content of the intermediate CA certificate file.
  6. ${PRIVATE_KEY}: The PEM format content of the private key file.

Please visit the authorization management page for addtional notes.", "workflow_node.deploy.form.webhook_data.errmsg.json_invalid": "Please enter a valiod JSON string", "workflow_node.deploy.form.strategy_config.label": "Strategy settings", @@ -867,31 +867,34 @@ "workflow_node.notify.form.channel.button": "Configure", "workflow_node.notify.form.provider.label": "Notification channel", "workflow_node.notify.form.provider.placeholder": "Please select notification channel", - "workflow_node.notify.form.provider_access.label": "Notification provider authorization", - "workflow_node.notify.form.provider_access.placeholder": "Please select an authorization of notification provider", + "workflow_node.notify.form.provider_access.label": "Notification provider credential", + "workflow_node.notify.form.provider_access.placeholder": "Please select an credential of notification provider", "workflow_node.notify.form.provider_access.button": "Create", "workflow_node.notify.form.params_config.label": "Parameter settings", "workflow_node.notify.form.discordbot_channel_id.label": "Discord channel ID (Optional)", "workflow_node.notify.form.discordbot_channel_id.placeholder": "Please enter Discord channel ID to override the default value", - "workflow_node.notify.form.discordbot_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the authorization.", + "workflow_node.notify.form.discordbot_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the credential.", "workflow_node.notify.form.email_sender_address.label": "Sender email address (Optional)", "workflow_node.notify.form.email_sender_address.placeholder": "Please enter sender email address to override the default value", - "workflow_node.notify.form.email_sender_address.tooltip": "Leave it blank to use the default sender email address provided by the authorization.", + "workflow_node.notify.form.email_sender_address.tooltip": "Leave it blank to use the default sender email address provided by the credential.", + "workflow_node.notify.form.email_sender_name.label": "Sender display name (Optional)", + "workflow_node.notify.form.email_sender_name.placeholder": "Please enter sender display name to override the default value", + "workflow_node.notify.form.email_sender_name.tooltip": "Leave it blank to use the default sender display name provided by the credential.", "workflow_node.notify.form.email_receiver_address.label": "Receiver email address (Optional)", "workflow_node.notify.form.email_receiver_address.placeholder": "Please enter receiver email address to override the default value", - "workflow_node.notify.form.email_receiver_address.tooltip": "Leave it blank to use the default receiver email address provided by the selected authorization.", + "workflow_node.notify.form.email_receiver_address.tooltip": "Leave it blank to use the default receiver email address provided by the selected credential.", "workflow_node.notify.form.mattermost_channel_id.label": "Mattermost channel ID (Optional)", "workflow_node.notify.form.mattermost_channel_id.placeholder": "Please enter Mattermost channel ID to override the default value", - "workflow_node.notify.form.mattermost_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the authorization.", + "workflow_node.notify.form.mattermost_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the credential.", "workflow_node.notify.form.slackbot_channel_id.label": "Slack channel ID (Optional)", "workflow_node.notify.form.slackbot_channel_id.placeholder": "Please enter Slack channel ID to override the default value", - "workflow_node.notify.form.slackbot_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the authorization.", + "workflow_node.notify.form.slackbot_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the credential.", "workflow_node.notify.form.telegrambot_chat_id.label": "Telegram chat ID (Optional)", "workflow_node.notify.form.telegrambot_chat_id.placeholder": "Please enter Telegram chat ID to override the default value", - "workflow_node.notify.form.telegrambot_chat_id.tooltip": "Leave it blank to use the default chat ID provided by the selected authorization.", + "workflow_node.notify.form.telegrambot_chat_id.tooltip": "Leave it blank to use the default chat ID provided by the selected credential.", "workflow_node.notify.form.webhook_data.label": "Webhook data (Optional)", "workflow_node.notify.form.webhook_data.placeholder": "Please enter Webhook data to override the default value", - "workflow_node.notify.form.webhook_data.tooltip": "Leave it blank to use the default Webhook data provided by the authorization.", + "workflow_node.notify.form.webhook_data.tooltip": "Leave it blank to use the default Webhook data provided by the credential.", "workflow_node.notify.form.webhook_data.guide": "
Supported variables:
  1. ${SUBJECT}: The subject of notification.
  2. ${MESSAGE}: The message of notification.

Please visit the authorization management page for addtional notes.", "workflow_node.notify.form.webhook_data.errmsg.json_invalid": "Please enter a valiod JSON string", "workflow_node.notify.form.strategy_config.label": "Strategy settings", diff --git a/ui/src/i18n/locales/zh/nls.access.json b/ui/src/i18n/locales/zh/nls.access.json index d55c3066..f5a9f3d8 100644 --- a/ui/src/i18n/locales/zh/nls.access.json +++ b/ui/src/i18n/locales/zh/nls.access.json @@ -208,10 +208,12 @@ "access.form.email_username.placeholder": "请输入用户名", "access.form.email_password.label": "密码", "access.form.email_password.placeholder": "请输入密码", - "access.form.email_default_sender_address.label": "默认的发送邮箱地址(可选)", - "access.form.email_default_sender_address.placeholder": "请输入默认的发送邮箱地址", - "access.form.email_default_receiver_address.label": "默认的接收邮箱地址(可选)", - "access.form.email_default_receiver_address.placeholder": "请输入默认的接收邮箱地址", + "access.form.email_default_sender_address.label": "默认的发件人邮箱(可选)", + "access.form.email_default_sender_address.placeholder": "请输入默认的发件人邮箱", + "access.form.email_default_sender_name.label": "默认的发件人名称(可选)", + "access.form.email_default_sender_name.placeholder": "请输入默认的发件人名称", + "access.form.email_default_receiver_address.label": "默认的收件人邮箱(可选)", + "access.form.email_default_receiver_address.placeholder": "请输入默认的收件人邮箱", "access.form.flexcdn_server_url.label": "FlexCDN 服务地址", "access.form.flexcdn_server_url.placeholder": "请输入 FlexCDN 服务地址", "access.form.flexcdn_api_role.label": "FlexCDN 用户角色", diff --git a/ui/src/i18n/locales/zh/nls.workflow.nodes.json b/ui/src/i18n/locales/zh/nls.workflow.nodes.json index f1ecf783..7e216a69 100644 --- a/ui/src/i18n/locales/zh/nls.workflow.nodes.json +++ b/ui/src/i18n/locales/zh/nls.workflow.nodes.json @@ -873,12 +873,15 @@ "workflow_node.notify.form.discordbot_channel_id.label": "Discord 频道 ID(可选)", "workflow_node.notify.form.discordbot_channel_id.placeholder": "请输入 Discord 频道 ID 以覆盖默认值", "workflow_node.notify.form.discordbot_channel_id.tooltip": "不填写时,将使用所选通知渠道授权的默认频道 ID。", - "workflow_node.notify.form.email_sender_address.label": "发送邮箱地址(可选)", - "workflow_node.notify.form.email_sender_address.placeholder": "请输入发送邮箱地址以覆盖默认值", - "workflow_node.notify.form.email_sender_address.tooltip": "不填写时,将使用所选通知渠道授权的默认发送邮箱地址。", - "workflow_node.notify.form.email_receiver_address.label": "接收邮箱地址(可选)", - "workflow_node.notify.form.email_receiver_address.placeholder": "请输入接收邮箱地址以覆盖默认值", - "workflow_node.notify.form.email_receiver_address.tooltip": "不填写时,将使用所选通知渠道授权的默认接收邮箱地址。", + "workflow_node.notify.form.email_sender_address.label": "发件人邮箱(可选)", + "workflow_node.notify.form.email_sender_address.placeholder": "请输入发件人邮箱以覆盖默认值", + "workflow_node.notify.form.email_sender_address.tooltip": "不填写时,将使用所选通知渠道授权的默认发件人邮箱。", + "workflow_node.notify.form.email_sender_name.label": "发件人名称(可选)", + "workflow_node.notify.form.email_sender_name.placeholder": "请输入发件人名称以覆盖默认值", + "workflow_node.notify.form.email_sender_name.tooltip": "不填写时,将使用所选通知渠道授权的默认发件人名称。", + "workflow_node.notify.form.email_receiver_address.label": "收件人邮箱(可选)", + "workflow_node.notify.form.email_receiver_address.placeholder": "请输入收件人邮箱以覆盖默认值", + "workflow_node.notify.form.email_receiver_address.tooltip": "不填写时,将使用所选通知渠道授权的默认收件人邮箱。", "workflow_node.notify.form.mattermost_channel_id.label": "Mattermost 频道 ID(可选)", "workflow_node.notify.form.mattermost_channel_id.placeholder": "请输入 Mattermost 频道 ID 以覆盖默认值", "workflow_node.notify.form.mattermost_channel_id.tooltip": "不填写时,将使用所选通知渠道授权的默认频道 ID。",