Add "from" to Email provider

This commit is contained in:
Yang Luo
2023-05-04 23:41:37 +08:00
parent 55fd31f575
commit bf6d5e529b
13 changed files with 101 additions and 17 deletions

View File

@@ -24,11 +24,9 @@ import (
func getDialer(provider *Provider) *gomail.Dialer { func getDialer(provider *Provider) *gomail.Dialer {
dialer := &gomail.Dialer{} dialer := &gomail.Dialer{}
dialer = gomail.NewDialer(provider.Host, provider.Port, provider.ClientId, provider.ClientSecret)
if provider.Type == "SUBMAIL" { if provider.Type == "SUBMAIL" {
dialer = gomail.NewDialer(provider.Host, provider.Port, provider.AppId, provider.ClientSecret)
dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true} dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
} else {
dialer = gomail.NewDialer(provider.Host, provider.Port, provider.ClientId, provider.ClientSecret)
} }
dialer.SSL = !provider.DisableSsl dialer.SSL = !provider.DisableSsl
@@ -40,7 +38,18 @@ func SendEmail(provider *Provider, title string, content string, dest string, se
dialer := getDialer(provider) dialer := getDialer(provider)
message := gomail.NewMessage() message := gomail.NewMessage()
message.SetAddressHeader("From", provider.ClientId, sender)
fromAddress := provider.ClientId2
if fromAddress == "" {
fromAddress = provider.ClientId
}
fromName := provider.ClientSecret2
if fromName == "" {
fromName = sender
}
message.SetAddressHeader("From", fromAddress, fromName)
message.SetHeader("To", dest) message.SetHeader("To", dest)
message.SetHeader("Subject", title) message.SetHeader("Subject", title)
message.SetBody("text/html", content) message.SetBody("text/html", content)

View File

@@ -78,8 +78,11 @@ func GetMaskedProvider(provider *Provider) *Provider {
if provider.ClientSecret != "" { if provider.ClientSecret != "" {
provider.ClientSecret = "***" provider.ClientSecret = "***"
} }
if provider.ClientSecret2 != "" {
provider.ClientSecret2 = "***" if provider.Category != "Email" {
if provider.ClientSecret2 != "" {
provider.ClientSecret2 = "***"
}
} }
return provider return provider

View File

@@ -132,6 +132,34 @@ class ProviderEditPage extends React.Component {
} }
} }
getClientId2Label(provider) {
switch (provider.category) {
case "Email":
return Setting.getLabel(i18next.t("provider:From address"), i18next.t("provider:From address - Tooltip"));
default:
if (provider.type === "Aliyun Captcha") {
return Setting.getLabel(i18next.t("provider:Scene"), i18next.t("provider:Scene - Tooltip"));
} else if (provider.type === "WeChat Pay") {
return Setting.getLabel(i18next.t("provider:App ID"), i18next.t("provider:App ID - Tooltip"));
} else {
return Setting.getLabel(i18next.t("provider:Client ID 2"), i18next.t("provider:Client ID 2 - Tooltip"));
}
}
}
getClientSecret2Label(provider) {
switch (provider.category) {
case "Email":
return Setting.getLabel(i18next.t("provider:From name"), i18next.t("provider:From name - Tooltip"));
default:
if (provider.type === "Aliyun Captcha") {
return Setting.getLabel(i18next.t("provider:App key"), i18next.t("provider:App key - Tooltip"));
} else {
return Setting.getLabel(i18next.t("provider:Client secret 2"), i18next.t("provider:Client secret 2 - Tooltip"));
}
}
}
getProviderSubTypeOptions(type) { getProviderSubTypeOptions(type) {
if (type === "WeCom" || type === "Infoflow") { if (type === "WeCom" || type === "Infoflow") {
return ( return (
@@ -446,7 +474,7 @@ class ProviderEditPage extends React.Component {
this.state.provider.category === "AI" ? null : ( this.state.provider.category === "AI" ? null : (
<Row style={{marginTop: "20px"}} > <Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}> <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{this.getClientIdLabel(this.state.provider)} {this.getClientIdLabel(this.state.provider)} :
</Col> </Col>
<Col span={22} > <Col span={22} >
<Input value={this.state.provider.clientId} onChange={e => { <Input value={this.state.provider.clientId} onChange={e => {
@@ -458,7 +486,7 @@ class ProviderEditPage extends React.Component {
} }
<Row style={{marginTop: "20px"}} > <Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}> <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{this.getClientSecretLabel(this.state.provider)} {this.getClientSecretLabel(this.state.provider)} :
</Col> </Col>
<Col span={22} > <Col span={22} >
<Input value={this.state.provider.clientSecret} onChange={e => { <Input value={this.state.provider.clientSecret} onChange={e => {
@@ -470,15 +498,11 @@ class ProviderEditPage extends React.Component {
) )
} }
{ {
this.state.provider.type !== "WeChat" && this.state.provider.type !== "Aliyun Captcha" && this.state.provider.type !== "WeChat Pay" ? null : ( this.state.provider.category !== "Email" && this.state.provider.type !== "WeChat" && this.state.provider.type !== "Aliyun Captcha" && this.state.provider.type !== "WeChat Pay" ? null : (
<React.Fragment> <React.Fragment>
<Row style={{marginTop: "20px"}} > <Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}> <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{this.state.provider.type === "Aliyun Captcha" {this.getClientId2Label(this.state.provider)} :
? Setting.getLabel(i18next.t("provider:Scene"), i18next.t("provider:Scene - Tooltip"))
: this.state.provider.type === "WeChat Pay"
? Setting.getLabel("appId", "appId")
: Setting.getLabel(i18next.t("provider:Client ID 2"), i18next.t("provider:Client ID 2 - Tooltip"))}
</Col> </Col>
<Col span={22} > <Col span={22} >
<Input value={this.state.provider.clientId2} onChange={e => { <Input value={this.state.provider.clientId2} onChange={e => {
@@ -490,9 +514,7 @@ class ProviderEditPage extends React.Component {
this.state.provider.type === "WeChat Pay" ? null : ( this.state.provider.type === "WeChat Pay" ? null : (
<Row style={{marginTop: "20px"}} > <Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}> <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{this.state.provider.type === "Aliyun Captcha" {this.getClientSecret2Label(this.state.provider)} :
? Setting.getLabel(i18next.t("provider:App key"), i18next.t("provider:App key - Tooltip"))
: Setting.getLabel(i18next.t("provider:Client secret 2"), i18next.t("provider:Client secret 2 - Tooltip"))}
</Col> </Col>
<Col span={22} > <Col span={22} >
<Input value={this.state.provider.clientSecret2} onChange={e => { <Input value={this.state.provider.clientSecret2} onChange={e => {

View File

@@ -196,6 +196,7 @@
"Failed to add": "Fehler beim hinzufügen", "Failed to add": "Fehler beim hinzufügen",
"Failed to connect to server": "Die Verbindung zum Server konnte nicht hergestellt werden", "Failed to connect to server": "Die Verbindung zum Server konnte nicht hergestellt werden",
"Failed to delete": "Konnte nicht gelöscht werden", "Failed to delete": "Konnte nicht gelöscht werden",
"Failed to get answer": "Failed to get answer",
"Failed to save": "Konnte nicht gespeichert werden", "Failed to save": "Konnte nicht gespeichert werden",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "Favicon-URL, die auf allen Casdoor-Seiten der Organisation verwendet wird", "Favicon - Tooltip": "Favicon-URL, die auf allen Casdoor-Seiten der Organisation verwendet wird",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Ob das Scannen von QR-Codes zum Einloggen aktiviert werden soll", "Enable QR code - Tooltip": "Ob das Scannen von QR-Codes zum Einloggen aktiviert werden soll",
"Endpoint": "Endpoint", "Endpoint": "Endpoint",
"Endpoint (Intranet)": "Endpoint (Intranet)", "Endpoint (Intranet)": "Endpoint (Intranet)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "Host", "Host": "Host",
"Host - Tooltip": "Name des Hosts", "Host - Tooltip": "Name des Hosts",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "Failed to add", "Failed to add": "Failed to add",
"Failed to connect to server": "Failed to connect to server", "Failed to connect to server": "Failed to connect to server",
"Failed to delete": "Failed to delete", "Failed to delete": "Failed to delete",
"Failed to get answer": "Failed to get answer",
"Failed to save": "Failed to save", "Failed to save": "Failed to save",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "Favicon icon URL used in all Casdoor pages of the organization", "Favicon - Tooltip": "Favicon icon URL used in all Casdoor pages of the organization",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Whether to allow scanning QR code to login", "Enable QR code - Tooltip": "Whether to allow scanning QR code to login",
"Endpoint": "Endpoint", "Endpoint": "Endpoint",
"Endpoint (Intranet)": "Endpoint (Intranet)", "Endpoint (Intranet)": "Endpoint (Intranet)",
"From address": "From address",
"From address - Tooltip": "Email address of \"From\"",
"From name": "From name",
"From name - Tooltip": "Name of \"From\"",
"Host": "Host", "Host": "Host",
"Host - Tooltip": "Name of host", "Host - Tooltip": "Name of host",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "No se pudo agregar", "Failed to add": "No se pudo agregar",
"Failed to connect to server": "No se pudo conectar al servidor", "Failed to connect to server": "No se pudo conectar al servidor",
"Failed to delete": "No se pudo eliminar", "Failed to delete": "No se pudo eliminar",
"Failed to get answer": "Failed to get answer",
"Failed to save": "No se pudo guardar", "Failed to save": "No se pudo guardar",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "URL del icono Favicon utilizado en todas las páginas de Casdoor de la organización", "Favicon - Tooltip": "URL del icono Favicon utilizado en todas las páginas de Casdoor de la organización",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Si permitir el escaneo de códigos QR para acceder", "Enable QR code - Tooltip": "Si permitir el escaneo de códigos QR para acceder",
"Endpoint": "Punto final", "Endpoint": "Punto final",
"Endpoint (Intranet)": "Punto final (intranet)", "Endpoint (Intranet)": "Punto final (intranet)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "Anfitrión", "Host": "Anfitrión",
"Host - Tooltip": "Nombre del anfitrión", "Host - Tooltip": "Nombre del anfitrión",
"IdP": "IdP = Proveedor de Identidad", "IdP": "IdP = Proveedor de Identidad",

View File

@@ -196,6 +196,7 @@
"Failed to add": "Échec d'ajout", "Failed to add": "Échec d'ajout",
"Failed to connect to server": "Échec de la connexion au serveur", "Failed to connect to server": "Échec de la connexion au serveur",
"Failed to delete": "Échec de la suppression", "Failed to delete": "Échec de la suppression",
"Failed to get answer": "Failed to get answer",
"Failed to save": "Échec de sauvegarde", "Failed to save": "Échec de sauvegarde",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "L'URL de l'icône Favicon utilisée dans toutes les pages Casdoor de l'organisation", "Favicon - Tooltip": "L'URL de l'icône Favicon utilisée dans toutes les pages Casdoor de l'organisation",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Doit-on autoriser la numérisation de QR code pour se connecter ?", "Enable QR code - Tooltip": "Doit-on autoriser la numérisation de QR code pour se connecter ?",
"Endpoint": "Point final", "Endpoint": "Point final",
"Endpoint (Intranet)": "Point final (intranet)", "Endpoint (Intranet)": "Point final (intranet)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "Hôte", "Host": "Hôte",
"Host - Tooltip": "Nom d'hôte", "Host - Tooltip": "Nom d'hôte",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "Gagal menambahkan", "Failed to add": "Gagal menambahkan",
"Failed to connect to server": "Gagal terhubung ke server", "Failed to connect to server": "Gagal terhubung ke server",
"Failed to delete": "Gagal menghapus", "Failed to delete": "Gagal menghapus",
"Failed to get answer": "Failed to get answer",
"Failed to save": "Gagal menyimpan", "Failed to save": "Gagal menyimpan",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "URL ikon Favicon yang digunakan di semua halaman Casdoor organisasi", "Favicon - Tooltip": "URL ikon Favicon yang digunakan di semua halaman Casdoor organisasi",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Apakah diizinkan untuk memindai kode QR untuk masuk?", "Enable QR code - Tooltip": "Apakah diizinkan untuk memindai kode QR untuk masuk?",
"Endpoint": "Titik akhir", "Endpoint": "Titik akhir",
"Endpoint (Intranet)": "Titik Akhir (Intranet)", "Endpoint (Intranet)": "Titik Akhir (Intranet)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "Tuan rumah", "Host": "Tuan rumah",
"Host - Tooltip": "Nama tuan rumah", "Host - Tooltip": "Nama tuan rumah",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "追加できませんでした", "Failed to add": "追加できませんでした",
"Failed to connect to server": "サーバーに接続できませんでした", "Failed to connect to server": "サーバーに接続できませんでした",
"Failed to delete": "削除に失敗しました", "Failed to delete": "削除に失敗しました",
"Failed to get answer": "Failed to get answer",
"Failed to save": "保存に失敗しました", "Failed to save": "保存に失敗しました",
"Favicon": "ファビコン", "Favicon": "ファビコン",
"Favicon - Tooltip": "組織のすべてのCasdoorページに使用されるFaviconアイコンのURL", "Favicon - Tooltip": "組織のすべてのCasdoorページに使用されるFaviconアイコンのURL",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "ログインするためにQRコードをスキャンすることを許可するかどうか", "Enable QR code - Tooltip": "ログインするためにQRコードをスキャンすることを許可するかどうか",
"Endpoint": "エンドポイント", "Endpoint": "エンドポイント",
"Endpoint (Intranet)": "エンドポイント(イントラネット)", "Endpoint (Intranet)": "エンドポイント(イントラネット)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "ホスト", "Host": "ホスト",
"Host - Tooltip": "ホストの名前", "Host - Tooltip": "ホストの名前",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "추가하지 못했습니다", "Failed to add": "추가하지 못했습니다",
"Failed to connect to server": "서버에 연결하지 못했습니다", "Failed to connect to server": "서버에 연결하지 못했습니다",
"Failed to delete": "삭제에 실패했습니다", "Failed to delete": "삭제에 실패했습니다",
"Failed to get answer": "Failed to get answer",
"Failed to save": "저장에 실패했습니다", "Failed to save": "저장에 실패했습니다",
"Favicon": "파비콘", "Favicon": "파비콘",
"Favicon - Tooltip": "조직의 모든 Casdoor 페이지에서 사용되는 Favicon 아이콘 URL", "Favicon - Tooltip": "조직의 모든 Casdoor 페이지에서 사용되는 Favicon 아이콘 URL",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "QR 코드를 스캔해서 로그인할 수 있는지 여부", "Enable QR code - Tooltip": "QR 코드를 스캔해서 로그인할 수 있는지 여부",
"Endpoint": "엔드포인트", "Endpoint": "엔드포인트",
"Endpoint (Intranet)": "엔드포인트 (Intranet)", "Endpoint (Intranet)": "엔드포인트 (Intranet)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "호스트", "Host": "호스트",
"Host - Tooltip": "호스트의 이름", "Host - Tooltip": "호스트의 이름",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "Не удалось добавить", "Failed to add": "Не удалось добавить",
"Failed to connect to server": "Не удалось подключиться к серверу", "Failed to connect to server": "Не удалось подключиться к серверу",
"Failed to delete": "Не удалось удалить", "Failed to delete": "Не удалось удалить",
"Failed to get answer": "Failed to get answer",
"Failed to save": "Не удалось сохранить", "Failed to save": "Не удалось сохранить",
"Favicon": "Фавикон", "Favicon": "Фавикон",
"Favicon - Tooltip": "URL иконки Favicon, используемый на всех страницах организации Casdoor", "Favicon - Tooltip": "URL иконки Favicon, используемый на всех страницах организации Casdoor",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Разрешить ли сканирование QR-кода для входа в систему", "Enable QR code - Tooltip": "Разрешить ли сканирование QR-кода для входа в систему",
"Endpoint": "Конечная точка", "Endpoint": "Конечная точка",
"Endpoint (Intranet)": "Конечная точка (интранет)", "Endpoint (Intranet)": "Конечная точка (интранет)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "Хост", "Host": "Хост",
"Host - Tooltip": "Имя хоста", "Host - Tooltip": "Имя хоста",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "Không thể thêm được", "Failed to add": "Không thể thêm được",
"Failed to connect to server": "Không thể kết nối đến máy chủ", "Failed to connect to server": "Không thể kết nối đến máy chủ",
"Failed to delete": "Không thể xoá", "Failed to delete": "Không thể xoá",
"Failed to get answer": "Failed to get answer",
"Failed to save": "Không thể lưu được", "Failed to save": "Không thể lưu được",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "URL biểu tượng Favicon được sử dụng trong tất cả các trang của tổ chức Casdoor", "Favicon - Tooltip": "URL biểu tượng Favicon được sử dụng trong tất cả các trang của tổ chức Casdoor",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "Cho phép quét mã QR để đăng nhập", "Enable QR code - Tooltip": "Cho phép quét mã QR để đăng nhập",
"Endpoint": "Điểm cuối", "Endpoint": "Điểm cuối",
"Endpoint (Intranet)": "Điểm kết thúc (mạng nội bộ)", "Endpoint (Intranet)": "Điểm kết thúc (mạng nội bộ)",
"From address": "From address",
"From address - Tooltip": "From address - Tooltip",
"From name": "From name",
"From name - Tooltip": "From name - Tooltip",
"Host": "Chủ nhà", "Host": "Chủ nhà",
"Host - Tooltip": "Tên của người chủ chỗ ở", "Host - Tooltip": "Tên của người chủ chỗ ở",
"IdP": "IdP", "IdP": "IdP",

View File

@@ -196,6 +196,7 @@
"Failed to add": "添加失败", "Failed to add": "添加失败",
"Failed to connect to server": "连接服务器失败", "Failed to connect to server": "连接服务器失败",
"Failed to delete": "删除失败", "Failed to delete": "删除失败",
"Failed to get answer": "获取回答失败",
"Failed to save": "保存失败", "Failed to save": "保存失败",
"Favicon": "Favicon", "Favicon": "Favicon",
"Favicon - Tooltip": "该组织所有Casdoor页面中所使用的Favicon图标URL", "Favicon - Tooltip": "该组织所有Casdoor页面中所使用的Favicon图标URL",
@@ -544,6 +545,10 @@
"Enable QR code - Tooltip": "是否允许扫描二维码登录", "Enable QR code - Tooltip": "是否允许扫描二维码登录",
"Endpoint": "地域节点 (外网)", "Endpoint": "地域节点 (外网)",
"Endpoint (Intranet)": "地域节点 (内网)", "Endpoint (Intranet)": "地域节点 (内网)",
"From address": "发件人地址",
"From address - Tooltip": "邮件里发件人的邮箱地址",
"From name": "发件人名称",
"From name - Tooltip": "邮件里发件人的显示名称",
"Host": "主机", "Host": "主机",
"Host - Tooltip": "主机名", "Host - Tooltip": "主机名",
"IdP": "IdP", "IdP": "IdP",