【问题标题】:Black diamonds for UTF8 symbols in the sender name when sending with sendmail使用 sendmail 发送时,发件人名称中的 UTF8 符号的黑色菱形
【发布时间】:2021-04-26 23:04:28
【问题描述】:

我尝试扩展电子邮件的“发件人”字段,代码如下所示:

name = 'Hans Müller';
mail = strcat(name, '<h.mueller@test.org>');
setpref('Internet','E_mail',mail);    
setpref('Internet','SMTP_Server','mail');
sendmail('input@test.org','New post',body);

这实际上效果很好,但是在前景中看到的不是发件人名称中的变音符号,而是黑色菱形 - “M�ller”。 我尝试使用

更改默认字符集
setpref ('Internet', 'E_mail_Charset', 'utf-8')

setpref ('Internet', 'E_mail_Charset', 'iso-8859-1')

两种变体都不成功,字符集“iso-8859-1”破坏了体内的元音变音,以前看起来很正常。

有人知道如何解决这个问题吗?正如我所说,正文 HTML 文本绝对没问题,只有发件人的姓名没有正确显示。提前致谢。

【问题讨论】:

  • 您确定这不是 Outlook 问题吗? MATLAB 似乎可以很好地处理变音符号。
  • 我认为outlook中的设置是可以的-在收到的电子邮件下是发件人名称中带有元音变音的发件人,并且显示正确。
  • 电子邮件中的发件人地址编码在电子邮件标题中,而不是电子邮件正文中,我认为电子邮件标题仅支持 ASCII 或 Latin-1 值。它可能有一些特殊的编码机制,而 Matlab 可能不知道它,所以你的 unicode“ü”在转换为 ASCII 电子邮件标头时可能会变得混乱。如果我有时间,我会看看这个。此外,这值得通过 support@mathworks.com 向 Matlab 技术支持开一张票。
  • stackoverflow.com/questions/760150/…tools.ietf.org/html/rfc6532。 Matlab 可能不在这些东西之上,因为那不是他们的风格。
  • 顺便说一句,你的意思是“Unicode”,而不是“UTF8”——Matlab 将其字符串内部存储为 UTF-16,而不是 UTF-8,并且在转换其 UTF-16 数据时必须进行转码到电子邮件标题或正文。

标签: matlab


【解决方案1】:

我找到了一个绝对不优雅的解决方案,那就是

regexprep(name,{'Ä','Ö','Ü','ä','ö','ü','ß'},{'Ä','Ö','Ü','ä','ö','ü','ß'})

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多