转自:http://jarvi.iteye.com/blog/2209212
使用Exchange Server邮件服务器发送邮件的特殊之处在于用户名username必须添加所在域的前缀,比如要使用域domain中的用户demo@sample.com来发送邮件,那么登录名要改成domain\demo,而不是普通stmp服务器中的demo@sample.com。
下面贴出演示代码:
- import java.util.Date;
- import java.util.Properties;
- import javax.mail.BodyPart;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.Multipart;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- public class Mailer {
- private String host;
- private String auth;
- private String username;
- private String domainUser;
- private String password;
- public boolean send(String[] to, String[] cc, String[] bcc, String subject, String content) throws MessagingException {
- Properties props = new Properties();
- props.put("mail.smtp.host", host);
- props.put("mail.smtp.auth", auth);
- Session s = Session.getInstance(props);
- // s.setDebug(true);
- MimeMessage message = new MimeMessage(s);
- InternetAddress from = new InternetAddress(username);
- message.setFrom(from);
- InternetAddress[] Toaddress = new InternetAddress[to.length];
- for (int i = 0; i < to.length; i++)
- Toaddress[i] = new InternetAddress(to[i]);
- message.setRecipients(Message.RecipientType.TO, Toaddress);
- if (cc != null) {
- InternetAddress[] Ccaddress = new InternetAddress[cc.length];
- for (int i = 0; i < cc.length; i++)
- Ccaddress[i] = new InternetAddress(cc[i]);
- message.setRecipients(Message.RecipientType.CC, Ccaddress);
- }
- if (bcc != null) {
- InternetAddress[] Bccaddress = new InternetAddress[bcc.length];
- for (int i = 0; i < bcc.length; i++)
- Bccaddress[i] = new InternetAddress(bcc[i]);
- message.setRecipients(Message.RecipientType.BCC, Bccaddress);
- }
- message.setSubject(subject);
- message.setSentDate(new Date());
- BodyPart mdp = new MimeBodyPart();
- mdp.setContent(content, "text/html;charset=utf-8");
- Multipart mm = new MimeMultipart();
- mm.addBodyPart(mdp);
- message.setContent(mm);
- message.saveChanges();
- Transport transport = s.getTransport("smtp");
- transport.connect(host, (null == domainUser) ? username : domainUser, password);
- transport.sendMessage(message, message.getAllRecipients());
- transport.close();
- return true;
- }
- public Mailer(String host, String auth, String domainUser, String username, String password) {
- super();
- this.host = host;
- this.auth = auth;
- this.domainUser = domainUser;
- this.username = username;
- this.password = password;
- }
- }
调用:
- new Mailer("smtp.sample.com", "true", "domain\\demo", "demo@sample.com", "password").send(new String[] { "to@mail.com" }, null, null, "demo_title", "<h3>test</h3>");