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();
}