Javamail 两种不同方式分析
第一种: 登陆个人邮箱,以此邮箱为基础发送邮件:
public static void sendTxtMail() { Properties props = new Properties(); Session session = Session.getInstance(props, null); session.setDebug(true);// 打开debug模式,会打印发送细节到console Message message = new MimeMessage(session); // 实例化一个MimeMessage集成自abstract Message // 。参数为session try { message.setFrom(new InternetAddress("xxxxxx")); // 设置发出方,使用setXXX设置单用户,使用addXXX添加InternetAddress[] message.setText("Test!"); // 设置文本内容 单一文本使用setText,Multipart复杂对象使用setContent message.setSubject("Test!"); // 设置标题 message.setRecipient(Message.RecipientType.TO, new InternetAddress("mx91953@imcap.ap.ssmb.com")); // 设置接收方 /** * 使用静态方法每次发送需要建立一个到smtp服务器的链接,你可以手动控制连接状态 * ,通过session获得tansport,连接到mailserver,而session就可以使用Session * .getDefaultInstance(props,null);获得 */ Transport transport = session.getTransport("smtp"); transport.connect("smtp.126.com", "xxxx, "xxxx");//用户名,密码 message.saveChanges(); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { // 此处处理AddressException异常 [The exception thrown when a wrongly formatted address is // encountered.] } }
第二种 本地有邮件服务已经启动。 linux 或者window 都应该有。具体不清楚 例子为linux:
try { String from = "XXXX" + InetAddress.getLocalHost().getHostName();//????????? String host = "localhost"; Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.debug", "true");//debug Session mailSession = Session.getInstance(props); Message msg = new MimeMessage(mailSession); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = { new InternetAddress(XXXXXXX) };//????? msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject("Test"); // ???? msg.setSentDate(new Date()); //?? // Set message content msg.setText("Test"); // ???? // Send the message Transport.send(msg); //?? } catch (Exception mex) { // Prints all nested (chained) exceptions as well mex.printStackTrace(); }