[英]Spring Java Mail - How to know send mail be read, bounce or forward by receiver?
我是Spring和Java邮件的新手,我是否可以知道Java邮件发送的电子邮件是如何读取,退回或转发的。 我用谷歌搜索只找到了如何发送邮件的方式。 任何人都知道在哪里可以得到参考或为我提供一些示例?
谢谢。
下面是我的代码用spring java mail发送邮件:
弹簧Mail.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="587" />
<property name="username" value="xxxxxxxx@gmail.com" />
<property name="password" value="xxxxxx" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.from">xxxxxxxx@hotmail.com</prop>
</props>
</property>
</bean>
<bean id="mailMail" class="com.penril.my.MailMail">
<property name="mailSender" ref="mailSender" />
</bean>
</beans>
MailMail.java
public class MailMail
{
private JavaMailSender mailSender;
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void sendMail(String from, String to, String subject, String msg) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(msg);
mailSender.send(message);
} catch (MessagingException e) {
throw new MailParseException(e);
}
}
}
MainClass.java
public class MainClass
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("Spring-Mail.xml");
MailMail mm = (MailMail) context.getBean("mailMail");
mm.sendMail("xxx123xxx@gmail.com",
"xxx234xxx@hotmail.co1m",
"Testing123",
"Testing only \n\n Hello Spring Email Sender");
}
}
没有任何一种标准的方法可以被广泛接受和尊重。 我看到您有一些选择,但是:
添加标头“ Return-Receipt-To”,并在该值中包含您的电子邮件地址。 如果电子邮件的收件人有接受此标头的客户,则在打开电子邮件时会向您发送退回收据。 请注意,这是不可靠的,因为即使用户有支持收据的用户也可以始终决定不发送收据。
将图像添加到从服务器加载的电子邮件中,并在图像上放置一个参数,其中包含用户的电子邮件地址。 加载电子邮件后,图像将从服务器上加载。 编写一个脚本,该脚本收集电子邮件参数,然后传递空白图像。 但是,这也不可靠,因为许多邮件客户端会提示用户是否要下载图像,并且始终可以选择不这样做。 另外,某些(大多数是较旧的)电子邮件客户端不支持图像。
也许最可靠的方法是根本不将邮件包含在电子邮件中。 仅包含指向可以阅读邮件的网站的链接,并在链接中包含其电子邮件地址或唯一代码。 这样,您可以确切地知道谁在阅读邮件。 当然,这样做的缺点是人们实际上并没有在收件箱中收到消息,他们也可能选择不去网站阅读消息。
最终,除非您乐于获得不合格的结果,否则我认为您将不得不想出一个有创意的解决方案来解决此问题。
注册一个基于云的SMTP服务的免费帐户,例如Sendgrid,这将为您省去手动实施上一个答案中建议的麻烦。
您可以每天免费发送400封电子邮件。 您可以使用管理控制台手动检查单个消息“已打开”,“退回”等的状态,也可以使用各种API以编程方式执行此操作(尽管某些API仅适用于付费层)。
例如,当事件(打开,退回,单击等)发生时,他们的WebHooks API将回调您的服务器:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.