1. 发送邮件实例
还是来个实例代码实在点
/** * 简单的发送邮件例子
*/
public class SendMail {
// 目的 private String to;
// 来源 private String from;
// 发送邮件的服务器 private String smtpServer;
// 发送端的账户 private String userName;
// 发送端的密码 private String password;
// 邮件主题 private String subject;
// 邮件内容 private String content;
// 附件 List<String> attachments = new ArrayList<String>();
//……………………省略setter、getter
public SendMail() {
}
/** * 中文gbk转换 * * @param text * @return */ public String transferChinese(String text) {
try { //对消息进行gbk转换 text = MimeUtility.encodeText(new String(text.getBytes()), "GB2312", "B"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return text; }
/** * 添加附件 * * @param name */ public void attachFile(String name) {
attachments.add(name);
}
/** * 发邮件 * * @return * @throws MessagingException * @throws AddressException */ public boolean sendMail() throws Exception {
// 属性配置 Properties properties = new Properties(); properties.put("mail.smtp.host", smtpServer);
// 是否进行smtp验证 properties.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(properties, new Authenticator() {//构造服务器认证对象
@Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } }); //建立实际邮件对象 //发送函数中的参数也是MimeMessage MimeMessage msg = new MimeMessage(session);
// 设置发件人地址 msg.setFrom(new InternetAddress(from));
// 设置收件人 // 收件人可以是多个,所以是数组 InternetAddress[] internetAddressTo = { new InternetAddress(to),new InternetAddress("[email protected]") };
// 目标的发送类型【直接发、抄送、暗送】 msg.setRecipients(Message.RecipientType.TO, internetAddressTo);
// 中文主题gbk转换 subject = transferChinese(subject);
msg.setSubject(subject); //建立保存电子邮件的内容的容器 Multipart mp = new MimeMultipart(); // 构造正文txt文本内容 MimeBodyPart mbpContent = new MimeBodyPart(); mbpContent.setText(content); //电子邮件的内容的容器添加txt内容 mp.addBodyPart(mbpContent);
// 构造邮件附件 for (String files : attachments) { MimeBodyPart filembpContent = new MimeBodyPart(); FileDataSource fds = new FileDataSource(files); filembpContent.setDataHandler(new DataHandler(fds)); filembpContent.setFileName(fds.getName()); mp.addBodyPart(filembpContent); } attachments.clear(); msg.setContent(mp); msg.setSentDate(new Date());
// 真正发送邮件 Transport.send(msg);
return true;
}
} |
这里注意的是对于中文主题的中文设置。
发送邮件的步骤就是:1:建立邮件Session会话2:通过会话创建MimeMessage对象3:对MimeMessage对象设置属性,内容、主题、附件等等 4:用Trasport发送邮件