提问人:octtag 提问时间:11/14/2023 最后编辑:Mark Rotteveelocttag 更新时间:11/15/2023 访问量:27
我使用 java mail 从我的方法发送了一封带有 html 的电子邮件,但只有在 gmail 中它才到达并且没有一些样式,它是什么?
I send an email with html from my method with java mail and only in gmail it arrives broken and without some styles, what is it?
问:
这是我的主要方法,第二个是我调用它的地方。我的 html 格式似乎是正确的,样式是内联的,当我将其发送给 Outlook 用户或当我手动将 html 放入以下 div 内的 gmail 中时,这就有效了:
<div id=":vn" class="Am Al editable LW-avf tS-tW" hidefocus="true" aria-label="Message Body" g_editable="true" role="textbox" aria-multiline="true" contenteditable="true" tabindex="1" style="direction: ltr; min-height: 266px;" spellcheck="false" aria-owns=":y1" aria-controls=":y1" aria-expanded="false"></div>
主要方法:
public void enviarEmail(String destinatario, String asunto, String contenidoHtml, String contentType) throws MessagingException {
// Configuración de las propiedades
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.hostinger.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
// Crear una nueva sesión con autenticación
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// Crear el mensaje
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(destinatario));
message.setSubject(asunto);
// Especificar UTF-8 en el contenido
message.setContent(contenidoHtml, contentType);
// Enviar el mensaje
Transport.send(message);
}
然后我用这个方法调用它:
public void enviarTicketsPorEmail(String correoDestinatario, Carrito carrito) throws MessagingException {
StringBuilder cuerpoEmail = new StringBuilder();
// .newsletter-recibo-de-tickets
cuerpoEmail.append("<!DOCTYPE html>")
.append("<html>")
.append("<head>")
.append("<meta charset=\"UTF-8\">")
.append("<meta http-equiv=\"X-UA-Compatible\" content=\"text/html; IE=edge\">")
.append("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">")
.append("<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;900&display=swap\" />")
.append("</head>")
//body
.append("<div style=\"margin:0;line-height:normal; display:flex; flex-direction: column; width:100%;justify-content: center;align-items: center;align-content: center;flex-wrap: nowrap;\">")
.append("<div style=\"width: 100%;\">")
.append("<img src=\"https://simplepassbucket.s3.sa-east-1.amazonaws.com/img/newsletters/parteInicialCompraExitosa.png\" style=\"width: 100%;\">")
.append("</div>")
.append("<div style=\"line-height:130%;display:inline-block;font-size:14px;margin:10px 0\">")
.append("<span style:'font-size: 14px'>Código de compra: <span style=\"font-weight:600; font-size: 14px\" id=\"m_-4881203300558445123codigoCompra\">")
.append(carrito.getPago().getPagoId())
.append("</span>")
.append("</span>")
.append("</div>")
//THE REST OF THE CODE WAS REMOVED SO IT IS NOT SO LONG
.append("</div>")
.append("</html>");
// Usar la función de envío de correo para enviar el correo con el cuerpo construido y el tipo de contenido correcto
mailSender.enviarEmail(correoDestinatario, "Tus tickets :)", cuerpoEmail.toString(), "text/html; charset=UTF-8");
}
我已经在那里解释过了,但是是的,基本上我需要一个 java 邮件中的方法示例,该方法能够自动向 gmail 用户发送 html,而不会破坏或变形。
答:
0赞
octtag
11/15/2023
#1
我使用的是 display: flex;Gmail 不支持此功能。我通过实现表结构解决了它。
评论