您的位置:首页 > 编程语言 > Java开发

Java SMTP发送邮件

2010-03-04 16:11 351 查看
package egtl.test;

import javax.naming.directory.Attributes;

import javax.naming.directory.DirContext;

import javax.naming.directory.InitialDirContext;

import java.util.Properties;

import java.util.Date;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.Message;

import javax.mail.internet.MimeMessage;

public class SMTPSender {

public static void main(String[] args) throws Exception {

// 下面是邮件要群发给的多个收件人地址

String[] to = {"Wei.Gan@163.com"};

// 创建Session对象

Properties props = new Properties();

/*

* mail.smtp.localhost属性用于设置SMTP协议的EHLO命令中的

* 主机名,其他SMTP服务器可能需要使用这个主机名确定发件SMTP 服务器的身份,这个信息可以从JavaMail的javadocs文档中的

* com.sun.mail.smtp包的帮助页面内查看到。

*/

props.setProperty("mail.smtp.localhost", "10.81.192.21");

Session session = Session.getInstance(props);

session.setDebug(true);

Message msg = createMessage(session);

for (int i = 0; i < to.length; i++) {

try {

sendMessage(session, msg, to[i]);

} catch (Exception e) {

e.printStackTrace();

}

}

}

public static Message createMessage(Session session) throws Exception {

String from = "Nan.Chen@163.com";// 发件人地址

String subject = "SMTPSender demo";// 邮件主题

String body = "This is a Lotus Notes Test...";// 邮件内容

// 创建代表邮件的MimeMessage对象,不包含收件人地址

MimeMessage msg = new MimeMessage(session);

msg.setFrom(new InternetAddress(from));

msg.setSentDate(new Date());

msg.setSubject(subject);

msg.setText(body);

return msg;

}

public static void sendMessage(Session session, Message msg, String to)

throws Exception {

// 设置邮件内容的收件人并生成邮件消息内容

msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));

msg.saveChanges();

// 连接收件人地址所在的SMTP服务器并发送邮件

Transport transport = session.getTransport("smtp");

String domain = to.substring(to.indexOf("@") + 1);

String smtpServer = getSmtpServer(domain, null);

transport.connect(smtpServer, null, null);

transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));

transport.close();

}

public static String getSmtpServer(String domain, String dnsServer)

throws Exception {

DirContext ctx = new InitialDirContext();

Attributes attrsMx = null;

if (dnsServer != null) {

attrsMx = ctx.getAttributes("dns:" + "//" + dnsServer + "/"

+ domain, new String[] { "MX" });

} else {

attrsMx = ctx.getAttributes("dns:" + "/" + domain,

new String[] { "MX" });

}

String recordMx = (String) attrsMx.get("MX").get();

String smtpServer = recordMx.substring(recordMx.indexOf(" ") + 1);

return smtpServer;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: