我已经在下面写了一个通过java mail api发送邮件的程序,现在我的查询是为了处理异常情况,也让我说,如果邮件没有发送,那么我必须da一些东西,如果邮件被发送,我必须在cas中做一些其他的事情,现在请告知java mail api在发送邮件时是否证明了任何参数,我们可以检查邮件是否成功发送,因为我已经在我的程序中启用了调试。
emailSession.setDebug(true);请告知java mail api返回的参数是什么,我们可以通过这个参数来检查邮件是否发送成功。
下面是我的java mail api的简单程序。
public class EmailTest {
public static void main(String[] args) {
String mailSmtpHost = "cakelycakes.com";
String mailTo = "bigcakes@cakelycakes.com";
String mailCc = "littlecakes@cakelycakes.com";
String mailFrom = "me@here.there.everywhere";
String mailSubject = "Email from Java";
String mailText = "This is an email from Java";
sendEmail(mailTo, mailCc, mailFrom, mailSubject, mailText, mailSmtpHost);
}
public static void sendEmail(String to, String cc, String from, String subject, String text, String smtpHost) {
try {
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);
Session emailSession = Session.getDefaultInstance(properties);
Message emailMessage = new MimeMessage(emailSession);
emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
emailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress(cc));
emailMessage.setFrom(new InternetAddress(from));
emailMessage.setSubject(subject);
emailMessage.setText(text);
emailSession.setDebug(true);
Transport.send(emailMessage);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}发布于 2015-06-04 11:04:20
我想你正在寻找这些JavaMail常见问题解答条目:
发布于 2015-06-04 08:32:25
嗯,有一种方法可以把所有的电子邮件都发送出去。
对于前-
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(host, user, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0, n = messages.length; i < n; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Text: " + message.getContent().toString());
}
//close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}}
您可以通过比较messag对象的内容来检查邮件是否已发送。
我希望它能对你有所帮助。
发布于 2017-06-01 11:53:20
我不确定这是不是你需要的。但是您可以像这样检查SMTP服务器的返回码:
// get your configuration (host, port, user, pwd)
...
// initialize your message
...
SMTPTransport transport = (SMTPTransport) session.getTransport("smtp");
transport.connect(host, port, user, pwd);
transport.sendMessage(message, message.getAllRecipients());
// you can get SMTP return code here
int code = transport.getLastReturnCode();https://stackoverflow.com/questions/30632960
复制相似问题