使用java向邮箱发送邮件
这是我很早之前写的一个工具类,最近在整理自己所学的东西,无意中找到了,就拿出来与大家分享,代码如下:
import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.BodyPart; import javax.mail.Multipart; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMultipart; import org.apache.struts.util.MessageResources; import com.qq.connect.javabeans.tenpay.Address; //import com.sun.istack.internal.ByteArrayDataSource; public class SendMails { public int sendMail(String emailTitle, String content, String emailTo,MessageResources message) throws Exception { System.out.println(smtpServer1); Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put( "mail.transport.protocol", "smpt"); props.put("mail.smtp.host", smtpServer1); // 获得邮件会话对象 Session session = Session.getInstance(props,new SmtpAuthenticator1(fromMailAddress1, password1)); /** *************************************************** */ // 创建MIME邮件对象 MimeMessage mimeMessage = new MimeMessage(session); mimeMessage.setFrom(new InternetAddress(fromMailAddress1));// 发件人 mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(emailTo));// 收件人 mimeMessage.setSubject(emailTitle); mimeMessage.setSentDate(new Date());// 发送日期 Multipart mp = new MimeMultipart("related");// related意味着可以发送html格式的邮件 /** *************************************************** */ BodyPart bodyPart = new MimeBodyPart();// 正文 StringBuffer content = new StringBuffer(); bodyPart.setDataHandler(new DataHandler(content.toString(),"text/html;charset=GBK"));// 网页格式 /** *************************************************** */ // BodyPart attachBodyPart = new MimeBodyPart();// 普通附件 // FileDataSource fds = new FileDataSource("c:/boot.ini"); // attachBodyPart.setDataHandler(new DataHandler(fds)); // attachBodyPart.setFileName("=?GBK?B?"+ new sun.misc.BASE64Encoder().encode(fds.getName().getBytes()) + "?=");// 解决附件名中文乱码 // mp.addBodyPart(attachBodyPart); /** *************************************************** */ // MimeBodyPart imgBodyPart = new MimeBodyPart(); // 附件图标 // byte[] bytes = readFile("E:/webcms/webcms/WebContent/images/bjx.jpg"); // ByteArrayDataSource fileds = new ByteArrayDataSource(bytes,"application/octet-stream"); // imgBodyPart.setDataHandler(new DataHandler(fileds)); // imgBodyPart.setFileName("button.gif"); // imgBodyPart.setHeader("Content-ID", "<IMG1></IMG1>");// 在html中使用该图片方法src="cid:IMG1" // mp.addBodyPart(imgBodyPart); /** *************************************************** */ mp.addBodyPart(bodyPart); mimeMessage.setContent(mp);//设置邮件内容对象 try { Transport.send(mimeMessage);//发送邮件 // Transport transport=session.getTransport(); // transport.send(mimeMessage); } catch (Exception e) { // e.printStackTrace(); if(e.getMessage().contains("550 User not found")){ return 2; }else{ return 3; } } //system.out.println("SendEmail OK!!"); return 0; } public void setUsername1(String username1) { this.username1 = username1; } public void setPassword1(String password1) { this.password1 = password1; } public void setSmtpServer1(String smtpServer1) { this.smtpServer1 = smtpServer1; } public void setFromMailAddress1(String fromMailAddress1) { this.fromMailAddress1 = fromMailAddress1; } public static byte[] readFile(String file) { FileInputStream fis = null; ByteArrayOutputStream bos = null; try { fis = new FileInputStream(file); bos = new ByteArrayOutputStream(); int bytesRead; byte buffer[] = new byte[1024 * 1024]; while ((bytesRead = fis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); Arrays.fill(buffer, (byte) 0); } } catch (IOException e1) { e1.printStackTrace(); } finally { try { if (bos != null) bos.close(); } catch (IOException e) { e.printStackTrace(); } } return bos.toByteArray(); } } /** * Smtp认证 */ class SmtpAuthenticator1 extends Authenticator { String username = null; String password = null; // SMTP身份验证 public SmtpAuthenticator1(String username, String password) { this.username = username; this.password = password; System.out.println(username+"::::::"+password); } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(this.username, this.password); } }