Java 当用户打开邮件时,如何更改数据表?
我已经修改了我的代码,现在我正在发送一个带有内容id的内联图像,其中将生成随机唯一id并存储在数据库中Java 当用户打开邮件时,如何更改数据表?,java,jakarta-mail,Java,Jakarta Mail,我已经修改了我的代码,现在我正在发送一个带有内容id的内联图像,其中将生成随机唯一id并存储在数据库中 SMTPMessage message = new SMTPMessage(session); MimeMultipart content = new MimeMultipart("related"); String cid = UUID.randomUUID().toString(); MimeBodyPart text
SMTPMessage message = new SMTPMessage(session);
MimeMultipart content = new MimeMultipart("related");
String cid = UUID.randomUUID().toString();
MimeBodyPart textPart = new MimeBodyPart();
message.setFrom(new InternetAddress(user));
InternetAddress[] recipientAddress = new InternetAddress[recipientList.length];
int counter = 0;
for (String recipient : recipientList) {
recipientAddress[counter] = new InternetAddress(recipient.trim());
counter++;
}
message.setRecipients(Message.RecipientType.BCC, recipientAddress);
message.setReplyTo(new InternetAddress[]{new InternetAddress("tanisha@boolment.com")});
message.setSubject("News Letters");
textPart.addHeader("Disposition-Notification-To", "tanishaa32@gmail.com");
textPart.setContent("<html>" + body + "</html>", "text/html");
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.setContentID("<img src='teapot.jpg?'" + cid + " width='1px' height='1px'>");
imagePart.attachFile("C:\\Users\\TANISHA AGARWAL\\Documents\\NetBeansProjects\\EmailMarketing\\build\\web\\resources\\teapot.jpg");
imagePart.setDisposition(MimeBodyPart.INLINE);
imagePart.setHeader("Content-Id", cid);
LOG.info("=========================================" + textPart.getContentID());
content.addBodyPart(textPart);
content.addBodyPart(imagePart);
message.setContent(content);
Transport.send(message);
String Status;
int Delievered;
int opened;
int clicked;
int counters = 0;
LOG.info("Notify Message is :" + SMTPMessage.NOTIFY_SUCCESS);
if (SMTPMessage.NOTIFY_SUCCESS == 1) {
Status = "Sent";
Delievered = 1;
opened = 0;
clicked = 0;
// for (int i = 0; i > counters; i++) {
// Delievered = i;
// LOG.info("Delievered: " + Delievered);
// counters++;
// }
} else {
LOG.info("------------------------------------");
Status = "Failed";
Delievered = 0;
opened = 0;
clicked = 0;
}
SMTPMessage message=新的SMTPMessage(会话);
MimeMultipart内容=新的MimeMultipart(“相关”);
字符串cid=UUID.randomUUID().toString();
MimeBodyPart textPart=新的MimeBodyPart();
message.setFrom(新Internet地址(用户));
InternetAddress[]recipientAddress=新的InternetAddress[recipientList.length];
int计数器=0;
for(字符串收件人:recipientList){
recipientAddress[计数器]=新的Internet地址(recipient.trim());
计数器++;
}
message.setRecipients(message.RecipientType.BCC,recipientAddress);
message.setReplyTo(新InternetAddress[]{new InternetAddress(“tanisha@boolment.com")});
message.setSubject(“新闻信函”);
addHeader(“处置通知到”tanishaa32@gmail.com");
setContent(“+body+”,“text/html”);
MimeBodyPart imagePart=新的MimeBodyPart();
imagePart.setContentID(“”);
imagePart.attachFile(“C:\\Users\\TANISHA AGARWAL\\Documents\\NetBeansProjects\\EmailMarketing\\build\\web\\resources\\teapot.jpg”);
setDisposition(MimeBodyPart.INLINE);
imagePart.setHeader(“内容Id”,cid);
LOG.info(“===========================================”+textPart.getContentID());
content.addBodyPart(textPart);
content.addBodyPart(imagePart);
message.setContent(content);
传输。发送(消息);
字符串状态;
内翻;
int开放;
点击int;
int计数器=0;
LOG.info(“通知消息为:”+SMTPMessage.Notify_SUCCESS);
if(SMTPMessage.NOTIFY_SUCCESS==1){
Status=“已发送”;
Delievered=1;
开放=0;
单击=0;
//对于(int i=0;i>计数器;i++){
//Delievered=i;
//LOG.info(“Delievered:+Delievered”);
//计数器++;
// }
}否则{
LOG.info(“---------------------------------------”;
Status=“失败”;
Delievered=0;
开放=0;
单击=0;
}
我在数据库中打开了一个列名,最初设置为0,但当用户打开邮件时,我希望该列名应更新为用户打开邮件的次数
请提供帮助。您需要一个web应用程序来处理对隐藏图像的请求,从URL中提取有关原始邮件的信息,并更新数据库
SMTPMessage message = new SMTPMessage(session);
MimeMultipart content = new MimeMultipart("related");
String cid = UUID.randomUUID().toString();
MimeBodyPart textPart = new MimeBodyPart();
message.setFrom(new InternetAddress(user));
InternetAddress[] recipientAddress = new InternetAddress[recipientList.length];
int counter = 0;
for (String recipient : recipientList) {
recipientAddress[counter] = new InternetAddress(recipient.trim());
counter++;
}
message.setRecipients(Message.RecipientType.BCC, recipientAddress);
message.setReplyTo(new InternetAddress[]{new InternetAddress("tanisha@boolment.com")});
message.setSubject("News Letters");
textPart.addHeader("Disposition-Notification-To", "tanishaa32@gmail.com");
textPart.setContent("<html>" + body + "</html>", "text/html");
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.setContentID("<img src='teapot.jpg?'" + cid + " width='1px' height='1px'>");
imagePart.attachFile("C:\\Users\\TANISHA AGARWAL\\Documents\\NetBeansProjects\\EmailMarketing\\build\\web\\resources\\teapot.jpg");
imagePart.setDisposition(MimeBodyPart.INLINE);
imagePart.setHeader("Content-Id", cid);
LOG.info("=========================================" + textPart.getContentID());
content.addBodyPart(textPart);
content.addBodyPart(imagePart);
message.setContent(content);
Transport.send(message);
String Status;
int Delievered;
int opened;
int clicked;
int counters = 0;
LOG.info("Notify Message is :" + SMTPMessage.NOTIFY_SUCCESS);
if (SMTPMessage.NOTIFY_SUCCESS == 1) {
Status = "Sent";
Delievered = 1;
opened = 0;
clicked = 0;
// for (int i = 0; i > counters; i++) {
// Delievered = i;
// LOG.info("Delievered: " + Delievered);
// counters++;
// }
} else {
LOG.info("------------------------------------");
Status = "Failed";
Delievered = 0;
opened = 0;
clicked = 0;
}
请注意,默认情况下,某些邮件不会显示此类图像,因此此方法充其量只是一种近似方法。什么样的web应用程序??我不知道如何从url中提取信息……当我在日志中打印时,它会提供相同的信息,除了用户已更改为发送邮件的人,收件人已更改为接收邮件的人。例如,servlet。隐藏图像必须位于html正文中。您在上面设置的内容ID将不起任何作用。图像URL指向您的web应用程序,当邮件阅读器试图获取图像以显示它时,会调用该应用程序。您可以在标识原始邮件的图像URL上包含查询参数,这样您就可以在数据库中找到它。好的……我现在已经修改了contentid部分,并用上面生成的cid传递了一个图像名称……那么发送这样的数据是否足够好,如果是yse……我怎么知道gmail收到了cide你不知道gmail什么时候收到它,你知道什么时候有人在邮件阅读器里读到它。您知道,因为邮件阅读器使用您包含的URL获取图像。您知道正在获取URL,因为您编写了响应URL获取的web应用程序。假设我正在给自己发送邮件,并且我已经阅读了该邮件…现在作为开发人员,我如何知道打开邮件后已获取cid…并且我没有在数据库中存储任何cid。