使用Exchange Server邮件服务器发送邮件的特殊之处在于用户名username必须添加所在域的前缀,比如要使用域domain中的用户[email protected]来发送邮件,那么登录名要改成domain\demo,而不是普通stmp服务器中的[email protected]。
下面贴出演示代码:
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", "[email protected]", "password").send(new String[] { "[email protected]" }, null, null, "demo_title", "<h3>test</h3>");