[英]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.