邮件即使很小也会被剪掉,元音重音问题(a、e、i、o、u 到 á、é、í、ó、ú)
Mail is being clipped even when is so small, problem with accent in vowels (a, e, i, o, u to á, é, í, ó, ú)
我正在发送一封电子邮件,其中 JavaMailSender 正文为 html,如下所示:
String html = "<h2>RFC INVALIDOS en México:</h2>"+
"<h4>Se adjunta el siguiente listado de RFC inválidos al día de la fecha.</h4>" +
"<h3>Saludos!!!</h3>";
MimeMessageHelper helper = return new MimeMessageHelper(mimeMessage, true); // some helper
helper.setSubject(message.getSubject());
helper.setText(html, true);
看看 "México"、"inválidos" 和 "día"
中的元音 (á, é, í)
邮件被剪掉了,告诉我还有更多要看的:
注意部分:
...
[Mensaje recortado] Ver todo el mensaje
但是如果我不引用元音就发送它:
String html = "<h2>RFC INVALIDOS en Mexico:</h2>"+
"<h4>Se adjunta el siguiente listado de RFC invalidos al dia de la fecha.</h4>" +
"<h3>Saludos!!!</h3>";
**查看元音 **查看 "mexico"、"invalidos" 和 "dia"****[= 中的元音 (a, e, i) 15=]
邮件已正确完美发送。
有什么线索吗?
您的电子邮件编辑器 'folds' 当 'body height' 是软件监视的 'beyond certain height' 时的邮件正文。
现在,您的总体 'mail body height' 是邮件正文中每一行的总和。现在每个字母都有一个高度,这会根据您是否使用带有 'accents' 的字母而有所不同,带重音字符和不带重音字符的字母的 'height' 不必相同。
在这个特定的例子中,前者没有吸引 'folding',而后者在您使用的电子邮件软件中有。
假设您在浏览器中查看这三行,您可以在浏览器中研究 'line heights' 'developer tools',最终确定使用重音字符时个别行高更多。
我敢打赌,减小字体大小,您就不会得到那个“...”(省略号)。下面是一个更具爆炸性的讨论,其中包含全面的历史和规范参考,以及不从技术上剖析字体的内容。
When setting a font-size in CSS, what is the real height of the letters?
我尝试了什么:
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("subject", "UTF-8"); // add encoding to support different languages...
message.setSentDate(new java.util.Date());
MimeBodyPart messageBodyPart = new MimeBodyPart();
String html = "<h2>RFC INVALIDOS en México:</h2>"+
"<h4>Se adjunta el siguiente listado de RFC inválidos al día de la fecha.</h4>" +
"<h3>Saludos!!!</h3>";
messageBodyPart.setContent(html, "text/html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// send message
Transport.send(message);
邮件截图(所有元音和重音都存在):
希望对您有所帮助:)
Gmail 截取邮件的原因(来自MailChimp Article on Gmail Clipping)
Gmail clips emails that have a message size larger than 102 KB, and
hides the full content behind a View entire message link.
因此,如果您想避免消息被截断,则必须将消息大小保持在 102 KB 以内。
最终在@Anish B 的间接帮助下。我找到了解决方案:
有一个 class MimeMessageHelper 并且 class 有几个构造函数:
public MimeMessageHelper(MimeMessage mimeMessage)
public MimeMessageHelper(MimeMessage mimeMessage, String encoding)
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart)
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)
我正在使用:
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart)
我将其更改为:
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)
看起来像:
protected MimeMessageHelper createMimeMsg(MimeMessage mimeMessage) throws MessagingException {
return new MimeMessageHelper(mimeMessage, true, "UTF-8");
}
看起来默认编码不是 "UTF-8",该帮助程序的默认编码是 null。即使我将 html 设置为 "UTF-8",它也无法识别。我不得不把它作为 mime 主题编码的一部分。
所以最终通过正确给出编码解决了问题。
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
它在他们的示例中作为抽象对象定义实现:
mailSender.send(new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws MessagingException {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); // Here is where it seems the encoding can be set, through this helper class.
//...
我现在也在 api 中发现了一些很酷的东西。如果您可以将您的签名制作成一个小的 kb 图像资源,然后以这种方式发送,这对您来说甚至可能更容易。这使您不必担心这种情况下的 UTF-8。
message.addInline("signature.png", new ClassPathResource("img/signature.png"));
无论如何,希望这对您有所帮助。让我知道我是否可以尝试为您更好地解释它。 (UTF-8)
第 1 点:以前关于 UTF-8 和 GMail 的 Whosebug 回答
utf 8 charset doesn't work with javax mail
第 2 点:您可能想要添加这一行,它适用于 HTML 个页面,并且它可能适用于您的问题:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
我正在发送一封电子邮件,其中 JavaMailSender 正文为 html,如下所示:
String html = "<h2>RFC INVALIDOS en México:</h2>"+
"<h4>Se adjunta el siguiente listado de RFC inválidos al día de la fecha.</h4>" +
"<h3>Saludos!!!</h3>";
MimeMessageHelper helper = return new MimeMessageHelper(mimeMessage, true); // some helper
helper.setSubject(message.getSubject());
helper.setText(html, true);
看看 "México"、"inválidos" 和 "día"
中的元音 (á, é, í)邮件被剪掉了,告诉我还有更多要看的:
注意部分:
...
[Mensaje recortado] Ver todo el mensaje
但是如果我不引用元音就发送它:
String html = "<h2>RFC INVALIDOS en Mexico:</h2>"+
"<h4>Se adjunta el siguiente listado de RFC invalidos al dia de la fecha.</h4>" +
"<h3>Saludos!!!</h3>";
**查看元音 **查看 "mexico"、"invalidos" 和 "dia"****[= 中的元音 (a, e, i) 15=]
邮件已正确完美发送。
有什么线索吗?
您的电子邮件编辑器 'folds' 当 'body height' 是软件监视的 'beyond certain height' 时的邮件正文。
现在,您的总体 'mail body height' 是邮件正文中每一行的总和。现在每个字母都有一个高度,这会根据您是否使用带有 'accents' 的字母而有所不同,带重音字符和不带重音字符的字母的 'height' 不必相同。
在这个特定的例子中,前者没有吸引 'folding',而后者在您使用的电子邮件软件中有。
假设您在浏览器中查看这三行,您可以在浏览器中研究 'line heights' 'developer tools',最终确定使用重音字符时个别行高更多。
我敢打赌,减小字体大小,您就不会得到那个“...”(省略号)。下面是一个更具爆炸性的讨论,其中包含全面的历史和规范参考,以及不从技术上剖析字体的内容。
When setting a font-size in CSS, what is the real height of the letters?
我尝试了什么:
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("subject", "UTF-8"); // add encoding to support different languages...
message.setSentDate(new java.util.Date());
MimeBodyPart messageBodyPart = new MimeBodyPart();
String html = "<h2>RFC INVALIDOS en México:</h2>"+
"<h4>Se adjunta el siguiente listado de RFC inválidos al día de la fecha.</h4>" +
"<h3>Saludos!!!</h3>";
messageBodyPart.setContent(html, "text/html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// send message
Transport.send(message);
邮件截图(所有元音和重音都存在):
希望对您有所帮助:)
Gmail 截取邮件的原因(来自MailChimp Article on Gmail Clipping)
Gmail clips emails that have a message size larger than 102 KB, and hides the full content behind a View entire message link.
因此,如果您想避免消息被截断,则必须将消息大小保持在 102 KB 以内。
最终在@Anish B 的间接帮助下。我找到了解决方案:
有一个 class MimeMessageHelper 并且 class 有几个构造函数:
public MimeMessageHelper(MimeMessage mimeMessage)
public MimeMessageHelper(MimeMessage mimeMessage, String encoding)
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart)
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)
我正在使用:
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart)
我将其更改为:
public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)
看起来像:
protected MimeMessageHelper createMimeMsg(MimeMessage mimeMessage) throws MessagingException {
return new MimeMessageHelper(mimeMessage, true, "UTF-8");
}
看起来默认编码不是 "UTF-8",该帮助程序的默认编码是 null。即使我将 html 设置为 "UTF-8",它也无法识别。我不得不把它作为 mime 主题编码的一部分。
所以最终通过正确给出编码解决了问题。
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
它在他们的示例中作为抽象对象定义实现:
mailSender.send(new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws MessagingException {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); // Here is where it seems the encoding can be set, through this helper class.
//...
我现在也在 api 中发现了一些很酷的东西。如果您可以将您的签名制作成一个小的 kb 图像资源,然后以这种方式发送,这对您来说甚至可能更容易。这使您不必担心这种情况下的 UTF-8。
message.addInline("signature.png", new ClassPathResource("img/signature.png"));
无论如何,希望这对您有所帮助。让我知道我是否可以尝试为您更好地解释它。 (UTF-8)
第 1 点:以前关于 UTF-8 和 GMail 的 Whosebug 回答
utf 8 charset doesn't work with javax mail
第 2 点:您可能想要添加这一行,它适用于 HTML 个页面,并且它可能适用于您的问题:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />