看你获取什么状态了,你可以自己在写程序时,完成一步,就通过print完成当前步骤的语句,以此判断程序运行后进行到了哪儿,同时catch(Exception e),当出错时也能判断出是哪儿出的问题。
但是否发送成功,这个没法完全作出判断,因为发送地址输入错误,和因网络原因没发过去等原因都属于程序判断不了的错误
package comvictor;
import javaioFile;
import javaioIOException;
import javaioInputStream;
import javautilProperties;
import javaxactivationDataHandler;
import javaxactivationDataSource;
import javaxactivationFileDataSource;
import javaxmailBodyPart;
import javaxmailMessage;
import javaxmailMessagingException;
import javaxmailMultipart;
import javaxmailSession;
import javaxmailTransport;
import javaxmailinternetInternetAddress;
import javaxmailinternetMimeBodyPart;
import javaxmailinternetMimeMessage;
import javaxmailinternetMimeMultipart;
import javaxmailinternetMimeUtility;
public class JavaMailWithAttachment {
private MimeMessage message;
private Session session;
private Transport transport;
private String mailHost = "";
private String sender_username = "";
private String sender_password = "";
private Properties properties = new Properties();
/
初始化方法
/
public JavaMailWithAttachment(boolean debug) {
InputStream in = JavaMailWithAttachmentclassgetResourceAsStream("/MailServerproperties");
try {
propertiesload(in);
thismailHost = propertiesgetProperty("mailsmtphost");
thissender_username = propertiesgetProperty("mailsenderusername");
thissender_password = propertiesgetProperty("mailsenderpassword");
} catch (IOException e) {
eprintStackTrace();
}
session = SessiongetInstance(properties);
sessionsetDebug(debug);//开启后有调试信息
message = new MimeMessage(session);
}
/
发送邮件
@param subject
邮件主题
@param sendHtml
邮件内容
@param receiveUser
收件人地址
@param attachment
附件
/
public void doSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) {
try {
// 发件人
InternetAddress from = new InternetAddress(sender_username);
messagesetFrom(from);
// 收件人
InternetAddress to = new InternetAddress(receiveUser);
messagesetRecipient(MessageRecipientTypeTO, to);
// 邮件主题
messagesetSubject(subject);
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 添加邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPartsetContent(sendHtml, "text/html;charset=UTF-8");
multipartaddBodyPart(contentPart);
// 添加附件的内容
if (attachment != null) {
BodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(attachment);
attachmentBodyPartsetDataHandler(new DataHandler(source));
// 网上流传的解决文件名乱码的方法,其实用MimeUtilityencodeWord就可以很方便的搞定
// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
//sunmiscBASE64Encoder enc = new sunmiscBASE64Encoder();
//messageBodyPartsetFileName("=GBKB" + encencode(attachmentgetName()getBytes()) + "=");
//MimeUtilityencodeWord可以避免文件名乱码
attachmentBodyPartsetFileName(MimeUtilityencodeWord(attachmentgetName()));
multipartaddBodyPart(attachmentBodyPart);
}
// 将multipart对象放到message中
messagesetContent(multipart);
// 保存邮件
messagesaveChanges();
transport = sessiongetTransport("smtp");
// smtp验证,就是你用来发邮件的邮箱用户名密码
transportconnect(mailHost, sender_username, sender_password);
// 发送
transportsendMessage(message, messagegetAllRecipients());
Systemoutprintln("send success!");
} catch (Exception e) {
eprintStackTrace();
} finally {
if (transport != null) {
try {
transportclose();
} catch (MessagingException e) {
eprintStackTrace();
}
}
}
}
public static void main(String[] args) {
JavaMailWithAttachment se = new JavaMailWithAttachment(true);
Systemoutprintln(se);
File affix = new File("E:\\测试-testtxt");
// File affix =null;
sedoSendHtmlEmail("##", "###", "####@##com", affix);//
}
}
注意点:1 jar可能有冲突,如果是demo可以直接应用mailjar
如果是一个工程则要替换javaEE中的mailjar包
2 关于properties配置文件的地址问题
ClassgetResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从
ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
import javaxmail;
import javaxmailinternet;
import javautil;
import javaio;
public class POP3Client {
public static void main(String[] args) {
Properties props = new Properties();
String host = "utopiapolyedu";
String username = "eharold";
String password = "mypassword";
String provider = "pop3";
try {
// Connect to the POP3 server
Session session = SessiongetDefaultInstance(props, null);
Store store = sessiongetStore(provider);
storeconnect(host, username, password);
// Open the folder
Folder inbox = storegetFolder("INBOX");
if (inbox == null) {
Systemoutprintln("No INBOX");
Systemexit(1);
}
inboxopen(FolderREAD_ONLY);
// Get the messages from the server
Message[] messages = inboxgetMessages();
for (int i = 0; i < messageslength; i++) {
Systemoutprintln("------------ Message " + (i+1)
+ " ------------");
messages[i]writeTo(Systemout);
}
// Close the connection
// but don't remove the messages from the server
inboxclose(false);
storeclose();
} catch (Exception ex) {
exprintStackTrace();
}
}
}
以上就是关于java发送邮件如何获取状态 比如我发了邮件 ,怎么知道是否发送成功呢 发送邮件后能获取一些状态吗 比全部的内容,包括:java发送邮件如何获取状态 比如我发了邮件 ,怎么知道是否发送成功呢 发送邮件后能获取一些状态吗 比、如何用java实现发邮件功能,并有几点注意事项、求一个简单java编写的邮件收发程序,邮件发送程序为smtpsend,邮件接收程序为popreceive。急需,感谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)