Разбор отклоненных писем с использованием Javamail и DSN.jar
Я нашел способ перенаправить мои письма с помощью моего собственного сервера SMTP. Теперь, в соответствии с требованием, я должен иметь возможность читать отклоненные электронные письма, используя мою программу, например причину отскока, адрес электронной почты получателя, содержимое электронной почты и т. Д. Stackru предположил, что dsn.jar может быть полезным. Я видел, что у него есть несколько методов. Но я не нахожу примеров, чтобы проверить, как это работает. Вот как я перенаправляю отклоненные письма, мой вопрос - как добавить функциональность для чтения отклоненных писем здесь или внутри следующей программы? Пожалуйста помоги.
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.dsn.DeliveryStatus;
import com.sun.mail.dsn.DispositionNotification;
import com.sun.mail.dsn.MessageHeaders;
import com.sun.mail.dsn.MultipartReport;
import com.sun.mail.dsn.Report;
public class SendEmail {
public static void main(String[] args) throws Exception {
Properties properties=new Properties();
InputStream input=new FileInputStream("SendEmail.properties");
properties.load(input);
//String smtpServer = "smtp.gmail.com";
String smtpServer = "Server.Address";
int port = 25;
final String userid = "abc@dhv.com";
final String password = properties.getProperty("EMAIL_PASSWORD1");
String contentType = "text/html";
String subject = "test: bounce an email to a different address " +
"from the sender";
String to = "bounceee@fauxmail.com";//some invalid address
String bounceAddr = "redirectingAddress@gmail.com";//change accordingly
String body = "Test: get message to bounce to a separate email address";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", smtpServer);
props.put("mail.smtp.port", "port");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.from", bounceAddr);
Session mailSession = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userid, password);
}
});
MimeMessage message = new MimeMessage(mailSession);
//SMTPMessage message=new SMTPMessage(mailSession);
message.addFrom(InternetAddress.parse(userid));
message.setRecipients(Message.RecipientType.TO, to);
//message.setHeader("Return-path", bounceAddr);
message.setSubject(subject);
message.setContent(body, contentType);
message.addHeader("Disposition-Notification-To",bounceAddr);
Transport transport = mailSession.getTransport();
try {
System.out.println("Sending ....");
transport.connect(smtpServer, port, userid, password);
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
System.out.println("Sending done ...");
} catch (Exception e) {
System.err.println("Error Sending: ");
e.printStackTrace();
}
/*System.out.println(message.isMimeType("multipart/report"));
System.out.println(message.isMimeType("text/html"));
MultipartReport multireport = (MultipartReport)message.getContent();
Report report=new Report(multireport);*/
/* DeliveryStatus status=new DeliveryStatus();
//status.ge
DispositionNotification notification=new DispositionNotification();
notification.getNotifications();
MessageHeaders headers=new MessageHeaders();
MultipartReport multiReport=new MultipartReport();
multiReport.getReturnedMessage();
//Report
Report report=new Report();*/
/* if (message.isMimeType("multipart/report")) {
System.out.println("Inside the loop");
MultipartReport report = (MultipartReport)message.getContent();
// see com.sun.mail.dsn package javadocs for MutlipartReport
report.getReturnedMessage();
MessageHeaders header=new MessageHeaders();
// header.getRecipients(arg0);
}*/
transport.close();
}
}
1 ответ
Чтение отклоненного сообщения похоже на чтение любого другого сообщения: вам нужно подключиться к Магазину, открыть папку и прочитать сообщение. Если у вас есть объект Message, представляющий отклоненное сообщение, вы можете использовать код, который вы закомментировали выше, для обработки содержимого этого сообщения. Но обратите внимание, что объект Message будет не отправленным вами объектом Message, а совершенно другим объектом Message, который поступает из папки, связанной с учетной записью redirectingAddress@gmail.com.