完善邮件详情页发件人隐藏字符清洗与格式化

This commit is contained in:
smail 2026-10-16 19:05:21 +08:00
parent 851a5d9d40
commit ad86aa94e4
3 changed files with 26 additions and 6 deletions

Binary file not shown.

View File

@ -106,10 +106,25 @@ export function usePage() {
return router.push({name: 'editer', query: {reply: String(id)}})
}
const cleanSenderText = (text) => {
if (!text) return String();
return String(text).replace(/[\u200B-\u200D\u2060-\u206F\uFEFF]/g, String()).trim();
};
const getInitial = (name) => {
if (!name) return '?';
return name.charAt(0).toUpperCase();
}
const cleaned = cleanSenderText(name);
if (!cleaned) return '?';
return cleaned.charAt(0).toUpperCase();
};
const formatSenderName = (fromName, fromAddress) => {
const cleaned = cleanSenderText(fromName);
return cleaned || fromAddress || String();
};
const hasSenderName = (fromName) => {
return cleanSenderText(fromName).length > 0;
};
const formatDetailDate = (dateStr) => {
if (!dateStr) return "";
@ -183,6 +198,9 @@ export function usePage() {
backToList,
handleReply,
getInitial,
cleanSenderText,
formatSenderName,
hasSenderName,
formatDetailDate,
handleDelete
}

View File

@ -43,12 +43,12 @@
<div class="mail-meta-card">
<div class="meta-left">
<div class="avatar-placeholder">
{{ getInitial(detailData.from_name || detailData.from_address) }}
{{ getInitial(formatSenderName(detailData.from_name, detailData.from_address)) }}
</div>
<div class="meta-info">
<div class="sender-line">
<span class="sender-name">{{ detailData.from_name !== '' ? detailData.from_name : detailData.from_address }}</span>
<span class="sender-email" v-if="detailData.from_name !== ''">&lt;{{ detailData.from_address }}&gt;</span>
<span class="sender-name">{{ formatSenderName(detailData.from_name, detailData.from_address) }}</span>
<span class="sender-email" v-if="hasSenderName(detailData.from_name)">&lt;{{ detailData.from_address }}&gt;</span>
</div>
<div class="receivers-line">
<span class="meta-label">{{ lang.to }}:</span>
@ -117,6 +117,8 @@ const {
ccs,
showBCC,
bccs,
formatSenderName,
hasSenderName,
formatDetailDate
} = usePage()
</script>